mysql 刪除沒有該條件的數據?從其他數據表更新該資數據的值到另一個數據表?

問題
A數據表欄位為 post_id
B數據表的欄位為 url
A跟B都有很多數據
A跟B有些 post_id 跟 url 是相符的 ,有些是不相符的 (A跟B有關聯性的字段是 post_id 跟 url )
如何把不相符的都刪除?只留下有關聯性的

DELETE a, b FROM   
`a`   
JOIN `b` ON b.ID != a.post_id
這樣卻失敗了....?

mariaDB 報錯誤:

#1064 - 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 'JOIN b ON b.ID != a.post_id' at line 3

然後又說

a, b 這一段是預期以外的符號?

PS:

  • 我要刪的是兩個資料表,只要都有不符合就刪除該筆
  • 我確定有 SELECT 到非常多不相符的數據,也有相符的數據。
  • a 的 post_id 有多個,例如b.ID 假如等於 123 那 a.post_id 有一個或多個123
阅读 565
评论
    2 个回答
    • 1.8k

    首先,你的delete语句,是一个语法错误,哪有一次删除两个表的道理呀。

    因为你要删除两个表,那么下面这样逐个表删除:

    # 删除a表
    DELETE FROM a WHERE post_id NOT EXISTS (SELECT ID FROM b);
    # 删除b表
    DELETE FROM b WHERE ID NOT EXISTS (SELECT post_id FROM a);
      相似问题
      推荐文章