可以在SQL删除查询中使用别名吗?

时间:2015-12-18 10:45:58

标签: mysql sql alias sql-delete

我有以下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删除语句(?)

一起使用

2 个答案:

答案 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)