2012-01-05 77 views
0

我有2個表,我有點糊塗了......MySQL搭配選擇刪除

 |products|       
________________________ 
| id | products_name | 
|______________________| 
| 1 | iphone4  | 
| 2 | htc desire | 
    etc............. 


    |special_price| 
________________________ 
| id | products_price| 
|______________________| 
| 1 | 400   | 
| 2 | 500   | 
    etc............. 

所有我想要做的是(?):

DELETE (ALL) FROM special_price WHERE products_name='iphone4' 

怎麼能這樣呢?

+0

爲什麼你不只是刪除special_price WHERE products_name ='iphone4'? – Li0liQ 2012-01-05 12:05:22

+0

@ Li0liQ:因爲'products_name'位於另一個表中。 – 2012-01-05 12:06:14

+0

@Sergio Tulentsev對不起,我忽視了這一點。 – Li0liQ 2012-01-05 12:07:05

回答

4

你需要找到的是PRODUCT_NAME的ID(S),試試這個:

在:(複雜的病症)

DELETE FROM special_price 
WHERE id IN (SELECT id FROM products WHERE products_name = 'iphone4') 
+0

哼...'IN'!='JOIN' – rabudde 2012-01-05 12:08:52

+0

是的我剛剛編輯 – rekans 2012-01-05 12:16:21

+0

工作,謝謝! – Nikitas 2012-01-05 12:23:16

4

試試這個:

DELETE sp FROM special_price sp 
INNER JOIN products p ON p.id = sp.id 
WHERE p.products_name = "iphone4"; 
+0

這將只從sp表中刪除 – newtover 2012-01-05 12:19:38

+0

是的,正確的。我正是這個意思。 OP可能不想刪除產品本身,只是特別優惠。 – 2012-01-05 12:20:48

+0

我想你的意思是寫:'DELETE sp FROM ...',所以只有表'special_price'的行被刪除。 – 2012-01-05 12:46:37