[英]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 FROM
, DELETE
和FROM
之间只有空格
尝试这个:
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.