Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 可以在SQL删除查询中使用别名吗?_Mysql_Sql_Alias_Sql Delete - Fatal编程技术网

Mysql 可以在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查询

我有以下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 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的解决方案是的,您的权利我已经更新并删除了别名,我认为这会使它更干净。