mysql在update帶有子查詢的時候,子查詢的表會鎖住,導致該表無法使用。比如
update a set comments = (select count(1) from b where id = a.id) where id = 123;
把b表給鎖住了。 而在oracle裡不存在這種情況 。
最後發現 mysql 預設的隔離級別是repeatable-read,oracle預設資料隔離級別是 read-committed 。所以在mysq中
update ... select * from
insert into .... select * from
這些語句中,都會鎖住子表的row.
將mysql 隔離級別改成
set session transaction isolation level read committed;
問題就解決
mysql update使用子查詢
今天我像以前操作oracle寫了一個update sql update device user a set a.scene id null where a.id not in select min t.id from device user t group by t.device id 根據子查詢的...
子查詢 exists子查詢
1 exists子查詢就是用來判斷某些條件是否滿足 跨表 exists是接在where之後,exists返回的結果只有0和1 2 返回結果的演示 select exists select from t student 3 select exists select from t student whe...
mysql 子查詢from 子查詢exists
查詢出來的結果集其實就是一張表,可以把返回的表繼續查詢 select goods id,goods name from select from goods order by goods id as tmp group by cat id判斷查詢子句是否有記錄,如果有一條或多條記錄存在返回 true,...