簡體   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