簡體   English   中英

將組中的列更新為最小值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM