欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql支持跨表delete刪除多表記錄

 更新時間:2012年12月16日 15:20:56   作者:  
Mysql可以在一個sql語句中同時刪除多表記錄,也可以根據(jù)多個表之間的關(guān)系來刪除某一個表中的記錄
前幾天寫了Mysql跨表更新的一篇總結(jié),今天我們看下跨表刪除。
在Mysql4.0之后,mysql開始支持跨表delete。
Mysql可以在一個sql語句中同時刪除多表記錄,也可以根據(jù)多個表之間的關(guān)系來刪除某一個表中的記錄。
假定我們有兩張表:Product表和ProductPrice表。前者存在Product的基本信息,后者存在Product的價格。
第一種跨表刪除的方式是不用join,在delete時指定用半角逗號分隔多個表來刪除,如下sql語句:
復(fù)制代碼 代碼如下:

DELETE p.*, pp.*
FROM product p, productPrice pp
WHERE p.productId = pp.productId
AND p.created < '2004-01-01'

第二種跨表刪除的方式是使用inner join在join中指定兩表之間的關(guān)聯(lián)關(guān)系,如下sql語句:
復(fù)制代碼 代碼如下:

DELETE p.*, pp.*
FROM product p
INNER JOIN productPrice pp
ON p.productId = pp.productId
WHERE p.created < '2004-01-01'

注意:跨表刪除不必刪除所有表的數(shù)據(jù),上面的sql語句表會同時刪除Product和ProductPrice兩張表中的數(shù)據(jù),但是你可以指定 DELETE product.*從而只刪除product表中的記錄,而不處理ProductPrice表中的記錄。

跨表刪除也可以使用left join,例如我們要刪除所有在ProductPrice表中沒有記錄的Product表記錄。如下sql語句:
復(fù)制代碼 代碼如下:

DELETE p.*
FROM product p
LEFT JOIN productPrice pp
ON p.productId = pp.productId
WHERE pp.productId is null

跨表刪除很有用,在需要的時候就用它吧。歡迎閱讀另外一篇關(guān)于跨表更新的介紹文章

相關(guān)文章

最新評論