Mysql也可以聯合多表更新和刪除

2021-04-07 12:12:20 字數 1254 閱讀 8269

(節選自mysql手冊)

多表更新

在 mysql 3.23 中,你可以使用 limit # 來確保只有給定的記錄行數目被更改。

如果乙個 order by 子句被使用(從 mysql 4.0.0 開始支援),記錄行將以指定的次序被更新。這實際上只有連同 limit 一起才有用。

從 mysql 4.0.4 開始,你也可以執行乙個包含多個表的 update 的操作:

update items,month set items.price=month.price

where items.id=month.id;

注意:多表 update 不可以使用 order by 或 limit。

多表刪除

第乙個多表刪除格式從 mysql 4.0.0 開始被支援。第二個多表刪除格式從 mysql 4.0.2 開始被支援。

僅僅在 from 或 using 子句 之前 列出的表中的匹配記錄行被刪除。效果就是,你要以從多個表中同時刪

除記錄行,並且同樣可以有其它的表用於檢索。

在表名後的 .* 僅僅是為了相容 access:

delete t1,t2 from t1,t2,t3 where t1.id=t2.id and t2.id=t3.id

ordelete from t1,t2 using t1,t2,t3 where t1.id=t2.id and t2.id=t3.id

在上面的情況下,我們僅僅從 t1 和 t2 表中刪除匹配的記錄行。

如果乙個 order by 子句被使用(從 mysql 4.0.0 開始支援), 記錄行將以指定的次序刪除。這實際上只有連同 limit 一起才有用。示例如下:

delete from somelog

where user = 'jcole'

order by timestamp

limit 1

這將刪除匹配 where 子句的,並且最早被插入(通過 timestamp 來確定)的記錄行。

delete 語句的limit rows 選項是 mysql 特有的,它告訴伺服器在控制權被返回到客戶端之前可被刪除的最大記

錄行數目。這可以用來確保乙個特定的 delete 命令不會占用太長的時間。你可以簡單地重複使用 delete 命令,直到被影響的記錄行數目小於 limit 值。

從 mysql 4.0 開始,在 delete 語句中可以指定多個表,用以從乙個表中刪除依賴於多表中的特殊情況

的記錄行。然而,在乙個多表刪除中,不能使用 order by 或 limit。

MySQL聯合多表更新和刪除

多表更新 在 mysql 3.23 中,你可以使用 limit 來確保只有給定的記錄行數目被更改。如果乙個 order by 子句被使用 從 mysql 4.0.0 開始支援 記錄行將以指定的次序被更新。這實際上只有連同 limit 一起才有用。從 mysql 4.0.4 開始,你也可以執行乙個包含...

Oracle多表聯合更新

以下是在後台更新易拓erp資料庫時遇到的乙個問題 1.在db14資料庫中將料件號p44開頭,並且品名為 塑膠袋 的料件改為消耗性料件.這個簡單 update db14.ima file set ima70 y where ima01 like p44 and ima02 塑膠袋 2.在以b021開頭...

聯合多表更新資料

正常思路 update t1 set t2.a select t2.a from t2 where t1.b t2.b 但是這樣執行之後會報錯 ora 01427 single row subquery returns more than one row 就是返回的值太多了,可能其中會包含一些重複行...