mysql - 试图从一个表中删除另一个表中存在的记录
问题描述
我正在尝试从表 ersr2 中删除表 ersr 中存在的记录,但出现语法错误。
这是我的命令:
MariaDB> delete from ersr2 e2 where e2.child_id in (select e.child_id from ersr e);
但我收到以下语法错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'e2 where e2.child_id in (select e.child_id from ersr e)' at line 1
我觉得这很奇怪,因为以下命令有效:
MariaDB> select e2.* from ersr2 e2 where e2.child_id in (select e.child_id from ersr e)
任何帮助将不胜感激。
解决方案
在delete子句中声明要删除的表(delete e2)
delete e2
from ersr2 e2
INNER JOIN ersr e ON e.child_id = e2.child_id
并且您可以使用内部联接而不是 IN(sud 查询)子句
推荐阅读
- excel-formula - sumproduct 与重复 - 只想要第一个实例
- selenium - 如何修复单击但不执行任何操作的按钮?
- regex - 正则表达式用多行替换单行
- c - C中浮点数组的内存分配
- r - 安装 rgeos Redhat
- freemarker - Freemarker 将转义的 ${expression} 分配给变量
- python - to_numeric 返回 NaN 相关
- git - 如何保持两个独立的工作目录同步——或者 git 能够识别相同的提交?
- angular - 在自定义指令中访问 ng-template 上的 let- 变量
- uwp - 无法使用 Open Sans 字体渲染特殊字符?