Mysql 可以在SQL删除查询中使用别名吗?
我有以下SQL查询:Mysql 可以在SQL删除查询中使用别名吗?,mysql,sql,alias,sql-delete,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”附近使用从表a中选择*,其中a.some\U id= b、 第1行的一些“id” 这似乎表明别名不能与SQL delete语句一起使用是的,您可以在delete查询
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”附近使用从表a中选择*,其中a.some\U id=
b、 第1行的一些“id”
这似乎表明别名不能与SQL delete语句一起使用是的,您可以在delete查询中使用别名。只需在删除关键字后使用该别名,即可正常工作。它指定从哪个表中删除记录
试试这个:
DELETE b
FROM table_b b
WHERE NOT EXISTS (SELECT * FROM table_a a WHERE a.some_id = b.some_id)
是,您可以在删除查询中使用别名。只需在删除关键字后使用该别名,即可正常工作。它指定从哪个表中删除记录
试试这个:
DELETE b
FROM table_b b
WHERE NOT EXISTS (SELECT * FROM table_a a WHERE a.some_id = b.some_id)
如果我正确理解您的查询,并且希望从表b中删除表a以外的所有记录。一种更简洁的书写方式可能是
DELETE FROM table_b WHERE id NOT IN (SELECT id FROM table_a)
如果我正确理解您的查询,并且希望从表b中删除表a以外的所有记录。一种更简洁的书写方式可能是
DELETE FROM table_b WHERE id NOT IN (SELECT id FROM table_a)
我喜欢这种方法,因为它避免了使用相关子查询。关于Saharsh所写的内容,由于DELETE和FROM之间缺少别名b,这难道不会有错误吗?现在,您可以完全删除别名,或者混合使用Saharsh的解决方案是的,您的权利我已经更新并删除了别名,我认为这会使整个别名更干净。我喜欢这种方法,因为它避免了使用相关子查询。关于Saharsh所写的内容,由于DELETE和FROM之间缺少别名b,这难道不会有错误吗?现在,您可以完全删除别名,或者混合使用Saharsh的解决方案是的,您的权利我已经更新并删除了别名,我认为这会使它更干净。