如何在mysql中使用INNER JOIN删除两个表中的行?

时间:2016-04-14 13:14:23

标签: mysql sql database join inner-join

我想删除两个表中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”附近)

3 个答案:

答案 0 :(得分:0)

标准SQL语法为.lock()DELETE FROMDELETE

之间只有空格而已。

试试这个:

FROM

答案 1 :(得分:0)

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

答案 2 :(得分:0)

MySQL Docs来看,您可以轻松完成此任务:

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

OR

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

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