繁体   English   中英

如何在MySQL中使用INNER JOIN从两个表中删除行?

[英]How to delete rows from two tables using INNER JOIN in mysql?

我想删除chart_id为1的两个表中的所有行,但是它将行不通,而且我不知道为什么。

DELETE `cms_module_charts` 
FROM `cms_module_charts` 
INNER JOIN `cms_module_charts_kategorie` 
ON `cms_module_charts_kategorie`.`chart_id`=`cms_module_charts`.`chart_id`
WHERE `chart_id`= 1

这是错误:意外字符。 (在位置7的“ cms_module_charts附近”)

MySQL文档看来,您可以轻松做到这一点:

 DELETE t1, t2 
   FROM t1 INNER JOIN t2 INNER JOIN t3
  WHERE t1.id=t2.id AND t2.id=t3.id;

要么

DELETE 
  FROM t1, t2 
 USING t1 INNER JOIN t2 INNER JOIN t3
 WHERE t1.id=t2.id AND t2.id=t3.id;

看起来更新,可取的JOIN标准也是可以接受的,我也不知道为什么您的查询会抱怨。 您确定查询中没有任何奇怪的字符吗?

标准的SQL语法是DELETE FROMDELETEFROM之间只有空格

尝试这个:

DELETE FROM (`cms_module_charts` INNER JOIN `cms_module_charts_kategorie` 
ON `cms_module_charts_kategorie`.`chart_id`=`cms_module_charts`.`chart_id`)
WHERE `chart_id`= 1

我认为在您的数据库方案中,您应该使用ON DELETE CASCADE ,然后在删除行时,它会删除其引用,但是当您使用联接删除时,这没有任何意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM