MySQL 如何對同一張表來查詢並update ?

2021-07-30 01:20:36 字數 824 閱讀 6185

mysql 不允許對同一張表來查詢並update的。

如下面的sql則不能執行。

update thb as outer_thb

set cnt=(

select count(*) from thb as innter_thb

where  innter_thb.type=outer_thb.type);

可以通過inner方式來達到這個目的,如下所示。

update 

thb inner join  ( 

select count(*) as cnt from thb 

group by thb.type ) as inner_thb  using (type) 

set thb.cnt=inner_thb. cnt;

update *** set *** where 這種寫法大家都知道,

這裡update和delete支援inner join的update 的定法

update tb_user

set pass=''

from tb_user usr

inner join tb_address addr on usr.naddressfk = addr.naddressid

where usr.id=123

update的格式是

update t1 set t1.name=』liu』 from t1 inner join t2 on t1.id = t2.tid

delete 語句也是類似

delete from t1 from t1 inner join t2 on t1.id = t2.tid

mysql多次join同一張表的處理

場景 商品表中有不同的商品分類id,一級商品分類id 二級商品分類id,商品分類id 商品分類表中有分類id和分類名稱 兩張表要多次關聯查詢獲取不同等級的分類名稱 如果直接join是不行的,因為分類名稱會重名,但是只要給商品分類表起個別名就可以解決這個問題。select gc.goods name,...

Mysql 如何建立一張臨時表

mysql 利用 temporary 關鍵字就可以建立出乙個臨時表。建立的這張表會在與伺服器的會話終止時自動消失 語法 create temporary table tbl name.規則 每個會話只能看到自己建立的臨時表,不同的會話可以建立相同表名稱的臨時表。臨時表的表名可以和永久表的名字相同。好...

MySQL中update一張表到另一張表

以下的文章主要介紹的是mysql 資料庫中如何將乙個實際應用表的相關資料插入到另外乙個表的實際操作方法,此方案看起來很簡單但是並非如此,雖然這個實現起來非常簡單,但是還是會困擾許多新手,因此專門發一篇文章備查。開發中,我們經常需要將乙個表的資料插入到另外乙個表,有時還需要指定匯入字段,雖然這個實現起...