簡體   English   中英

SELECT Mysql - 根據另一列替換一列中的值

[英]SELECT Mysql - Replacing value in one column based on another column

這是我的表:

ID     |     MainLink
----------------------
1      |     1111
2      |     1111
3      |     2222
4      |     3333
5      |     2222
6      |     4444

我需要能夠根據MainLink列中的不同值選擇和替換ID值。 ID列的新值必須是找到的第一個ID值。 這就是我想要的:

ID     |     MainLink
----------------------
1      |     1111
1      |     1111
3      |     2222
4      |     3333
3      |     2222
6      |     4444

希望這很清楚。 感謝您的任何幫助。

這將返回所有MainLinks和可用ID的最低值:

SELECT tmp.ID, t.MainLink
  FROM Table1 t
  JOIN ( SELECT MainLink, MIN(ID) AS ID
           FROM Table1
          GROUP BY MainLink
       ) AS tmp ON ( tmp.MainLink = t.MainLink );

結果(參見SQLFiddle上的示例)

ID  MainLinke
1   1111
1   1111
3   2222
4   3333
3   2222
6   4444

您可以使用updatejoin來執行此操作。 關鍵是計算子查詢中每個MainLink的最小id

update table t join
       (select MainLink, min(id) as minid
        from table t
        group by MainLink
       ) ml
       on t.MainLink = ml.MainLink and t.id > ml.minid
   set t.id = ml.minid;

我覺得很奇怪你真的想在你的表中創建重復項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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