我有以下SQL查询:
DELETE FROM table_b b WHERE NOT EXISTS (SELECT * FROM table_a a WHERE a.some_id = b.some_id)
我收到以下错误:
[Err] 1064 - 您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以获得正确的语法 在'b WHERE NOT EXISTS附近使用(SELECT * FROM table_a a WHERE a.some_id = b.some_id)'在第1行
这似乎表明别名不能与SQL删除语句(?)
一起使用答案 0 :(得分:3)
是的,您可以在 DELETE 查询中使用别名。只是你在DELETE关键字后使用该别名比它可以工作。它指定从哪个表中删除记录。
试试这个:
DELETE b
FROM table_b b
WHERE NOT EXISTS (SELECT * FROM table_a a WHERE a.some_id = b.some_id)
答案 1 :(得分:3)
如果我正确理解您的查询,并且您想删除表b中不在表a中的所有记录。一种更清晰的写作方式可能是
DELETE FROM table_b WHERE id NOT IN (SELECT id FROM table_a)