[英]Update columns to min value from a group
我有這樣的數據庫
uniqueid | name | newid | sirname
----------+-------------+-------+---------
A1 | Adam | NULL | Danny
A2 | Adam (Lee) | NULL | Danny
A5 | Adam (Koh) | NULL | Danny
B4 | Bruce | NULL | CK
B6 | Bruce (Lee)| NULL | CK
我如何將所有的newid
從group by sirname
更新為min(unique id)
我想要的結果:
uniqueid | name | newid | sirname
----------+-------------+-------+---------
A1 | Adam | A1 | Danny
A2 | Adam (Lee) | A1 | Danny
A5 | Adam (Koh) | A1 | Danny
B4 | Bruce | B4 | CK
B6 | Bruce (Lee) | B4 | CK
嘗試這個:
UPDATE table a
SET new_id = (SELECT MIN(unique_id)
FROM table b
WHERE b.sirname = a.sirname)
試試這個UPDATE JOIN
UPDATE
(
SELECT sirname,MIN(uniqueid) min_uniqueid
FROM mytable GROUP BY sirname
) A
INNER JOIN mytable B
USING (sirname)
SET
B.newid = A.min_uniqueid
;
為了使該查詢非常快速地工作,請確保您在sirname和uniqueid上具有復合索引。
如果沒有這樣的索引,請事先運行:
ALTER TABLE mytable ADD INDEX sirname_uniqueid_ndx (sirname,uniqueid);
試試看 !!!
如果BD。無法使用,請嘗試:
Update tableName As a
Set newid =
(Select uniqueid
From tableName As b
Where b.sirname = a.sirname
Order By uniqueid
Limit 1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.