可以在 SQL 删除查询中使用别名吗?
Can aliases be used in a SQL delete query?
我有以下 SQL 查询:
DELETE FROM table_b b WHERE NOT EXISTS (SELECT * FROM table_a a WHERE a.some_id = b.some_id)
并且出现以下错误:
[Err] 1064 - You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to
use near 'b WHERE NOT EXISTS(SELECT * FROM table_a a WHERE a.some_id =
b.some_id)' at line 1
这似乎表明别名不能与 SQL 删除语句一起使用 (?)
是的,您可以在 DELETE 查询中使用别名。只要你在 DELETE 关键字之后使用那个别名就可以了。它指定table 您已从中删除记录。
试试这个:
DELETE b
FROM table_b b
WHERE NOT EXISTS (SELECT * FROM table_a a WHERE a.some_id = b.some_id)
如果我对您的查询的理解正确并且您希望从 table b 中删除所有不在 table a 中的记录。更简洁的写法可能是
DELETE FROM table_b WHERE id NOT IN (SELECT id FROM table_a)
我有以下 SQL 查询:
DELETE FROM table_b b WHERE NOT EXISTS (SELECT * FROM table_a a WHERE a.some_id = b.some_id)
并且出现以下错误:
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'b WHERE NOT EXISTS(SELECT * FROM table_a a WHERE a.some_id = b.some_id)' at line 1
这似乎表明别名不能与 SQL 删除语句一起使用 (?)
是的,您可以在 DELETE 查询中使用别名。只要你在 DELETE 关键字之后使用那个别名就可以了。它指定table 您已从中删除记录。
试试这个:
DELETE b
FROM table_b b
WHERE NOT EXISTS (SELECT * FROM table_a a WHERE a.some_id = b.some_id)
如果我对您的查询的理解正确并且您希望从 table b 中删除所有不在 table a 中的记录。更简洁的写法可能是
DELETE FROM table_b WHERE id NOT IN (SELECT id FROM table_a)