2010-05-28 48 views
0

我正在研究存儲過程,需要根據時間戳刪除特定的行。這是我打算使用的內容,直到我發現如果它們都在同一個表上工作,則不能在刪除語句中包含select子句。執行DELETE的最好方法是使用來自MYSQL中SELECT語句的ID

DELETE FROM product WHERE merchant_id = 2 AND product_id IN 
(SELECT product_id FROM product WHERE merchant_id = 1 AND timestamp_updated > 1275062558); 

在存儲過程中是否有處理此問題的好方法。通常我只是拋出邏輯在PHP中構建product_id列表,但我試圖在數據服務器上完成所有處理。

+0

對不起,這個網站的新手。 – Aglystas 2010-05-28 17:55:16

+0

product_id是主鍵嗎?如果是這樣,merchant_id如何爲同一個product_id有兩個不同的值1和2? – mdma 2010-05-28 18:14:37

回答

0

使用自聯接。

DELETE p0 
FROM product AS p0 
JOIN product AS p1 ON p1.product_id=p0.product_id 
WHERE p0.merchant_id=2 
AND p1.merchant_id=1 AND p1.timestamp_updated>1275062558