mysql支撐跨表delete刪除多表記載。本站提示廣大學習愛好者:(mysql支撐跨表delete刪除多表記載)文章只能為提供參考,不一定能成為您想要的結果。以下是mysql支撐跨表delete刪除多表記載正文
頭幾天寫了Mysql跨表更新的一篇總結,明天我們看下跨表刪除。
在Mysql4.0以後,mysql開端支撐跨表delete。
Mysql可以在一個sql語句中同時刪除多表記載,也能夠依據多個表之間的關系來刪除某一個表中的記載。
假定我們有兩張表:Product表和ProductPrice表。前者存在Product的根本信息,後者存在Product的價錢。
第一種跨表刪除的方法是不消join,在delete時指定用半角逗號分隔多個表來刪除,以下sql語句:
DELETE p.*, pp.*
FROM product p, productPrice pp
WHERE p.productId = pp.productId
AND p.created < '2004-01-01'
第二種跨表刪除的方法是應用inner join在join中指定兩表之間的聯系關系關系,以下sql語句:
DELETE p.*, pp.*
FROM product p
INNER JOIN productPrice pp
ON p.productId = pp.productId
WHERE p.created < '2004-01-01'
留意:跨表刪除不用刪除一切表的數據,下面的sql語句表會同時刪除Product和ProductPrice兩張表中的數據,然則你可以指定 DELETE product.*從而只刪除product表中的記載,而不處置ProductPrice表中的記載。
跨表刪除也能夠應用left join,例如我們要刪除一切在ProductPrice表中沒有記載的Product表記載。以下sql語句:
DELETE p.*
FROM product p
LEFT JOIN productPrice pp
ON p.productId = pp.productId
WHERE pp.productId is null
跨表刪除很有效,在須要的時刻就用它吧。迎接浏覽別的一篇關於跨表更新的引見文章