尝试删除单个语句中的子选择生成的id列表。这可能吗?我一直在尝试以下方法:
[edit]更正后的查询
DELETE from store
WHERE id in ( SELECT store.id
FROM storeInfo
JOIN store ON storeInfo.store_id = store.id
WHERE storeInfo.type = 17 )
但这是不正确的语法......不确定如何正确构建它。
答案 0 :(得分:2)
DELETE store
FROM store
JOIN storeInfo
ON storeInfo.store_id = store.id
WHERE storeInfo.type = 17
答案 1 :(得分:2)
在错误更新问题后 - 您在子查询中不需要JOIN
。您只需从storeInfo.store_id
子查询中返回IN()
。
DELETE FROM `store` WHERE `id` IN (SELECT `store_id` FROM `storeInfo` WHERE `type` = 17)
MySQL不允许您在子查询中使用表store
,然后从中删除行。但是,您可以使用storeInfo
,因为它直接加入store_id
。
如果您需要从这些表的两个中删除(例如storeInfo
中的行在父项从store
中删除时成为孤立的行),请使用{代之以{1}}语法:
JOIN
查看MySQL DELETE
syntax reference以获取完整详情。
答案 2 :(得分:0)
您可以直接加入delete
delete store from store
JOIN storeInfo ON storeInfo.store_id = store.id
WHERE store.type = 17;