这是我的表:
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
希望这很清楚。谢谢你的帮助。
答案 0 :(得分:2)
这将返回所有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 );
ID MainLinke
1 1111
1 1111
3 2222
4 3333
3 2222
6 4444
答案 1 :(得分:1)
您可以使用update
和join
执行此操作。关键是计算子查询中每个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;
我确实觉得你真的想在你的表中创建重复项。