查询根据另一个表的ID从过时表中删除行

时间:2014-03-20 21:26:29

标签: mysql sql-delete

我有一张越来越大的桌子。它存储在我的网站上发布的产品的图像路径,但是当我们删除产品时,系统不会从图像表中删除图像行。所以我构建了一个目前在我的网站上发布的产品ID列表,我想建立一个mysql查询,删除我的网站上没有相应产品发布的行,所以我试着用它,但是这会删除表格的每一行,而不仅仅是我需要删除的那一行,有人能告诉我我做错了吗?

Delete from my_table where product_id not like ( "67" or
"201" or
"329" or
"333" or
"334" or
"335" or
"340" or
"343" or
"347" or
"348" or
"458" )

...
...
...

这个列表有大约2000个条目......我刚刚在这里贴了一些。问题是这个查询删除了我的表中的所有内容,而不仅仅是product_id不是我列出的产品ID之一的行。我希望我能够解释自己。

2 个答案:

答案 0 :(得分:1)

在您的ID列表中使用单引号而不是双引号而不是or

Delete from my_table where product_id not in ( '67', '201', '329', ...

答案 1 :(得分:1)

你应该尝试:

DELETE FROM my_table
WHERE
  product_id NOT IN ("67", "201", "329", ...)