mysql - 两个表 - 如果两个表中均未引用 ID,如何删除行

标签 mysql sql sql-delete

我有两个表:

listings(item_id, ...)
images(item_id,  ...)

两个表中的 item_id 值相同 - 但我从“listings”表中删除了列表,但没有删除“images”表中的相应行。

所以 - 如果 IMAGES 中的 item_id 与我的主“listings”表中任何更新的 item_id 值都不对应,我想删除第二个“images”表中的所有行。

如何删除“images”表中所有未被“listings”引用的记录?

我一直在试验 SQL 脚本和这样的子查询:

DELETE FROM images WHERE item_id IN
(SELECT item_id FROM images EXCEPT SELECT item_id FROM listings)

但在我搞砸之前,想确认这是否正确?

最佳答案

你应该使用子查询

DELETE FROM images WHERE item_id NOT IN(SELECT item_id FROM listings)

更多examples and explanation .

关于mysql - 两个表 - 如果两个表中均未引用 ID,如何删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5835589/

相关文章:

mysql - 从mysql表中删除N条旧记录

mysql - 具体的mysql选择查询

MYSQL迁移到postgreSQL问题

sql - 如何跳过插入 db2 中的错误行?

mysql - 使用 SQL 查询从表中批量删除大量记录

mysql - 哪个更有效,DELETE 和 INSERT 或 INSERT 和 UPDATE

Mysql 1366错误-使用utf8mb4编码

php - propel 2,mysql - 反向没有错误,没有创建 schema.xml

mysql - 选择重复项

sql - ActiveRecord 查找并仅返回与 [ :id] 对齐的选定列