SELECT Mysql - 根据另一列替换一列中的值

时间:2014-04-25 17:08:21

标签: mysql select

这是我的表:

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

希望这很清楚。谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

这将返回所有MainLinksID的最低值:

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 );

结果(见example on SQLFiddle)

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

答案 1 :(得分:1)

您可以使用updatejoin执行此操作。关键是计算子查询中每个id的最小MainLink

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;

我确实觉得你真的想在你的表中创建重复项。