执行DELETE使用MYSQL中SELECT语句的ID的最佳方法

时间:2010-05-28 17:52:19

标签: mysql

我正在处理一个存储过程,需要根据时间戳删除特定的行。这是我将要使用的内容,直到我发现如果它们都在同一个表上工作,则不能在delete语句中包含select子句。

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列表,但我正在尝试在数据服务器上完成所有处理。

1 个答案:

答案 0 :(得分: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