在一个表中的不同行和不同列中查找相同的值SQL

问题描述 投票:0回答:3

我有一张大桌子,上面有数十列,超过200万行。不同行的某些值可能相同,并且在同一表的不同列和不同行中重复。我如何找到他们?

示例:我需要查找所有这些内容。但是我不知道哪个是值“ THIS”。

id  |  c1  |  c2  |  c3  |  c4  |  c5  |  
----+------+------+------+------+------+-------  
1   | THIS |   x  |   y  |   z  | NULL |  
2   | NULL | THIS |   f  |   b  |   c  |
3   | NULL |   h  | NULL |   p  | THIS |   

一旦找到它们,我将需要合并它们,并将所有THIS移到列c1中,替换为NULL。

任何好主意?谢谢

sql duplicates
3个回答
0
投票
update table set c1='THIS' where c2='THIS' or c3='THIS' or c4='THIS' or ...

大概您可以使用编辑器来快速生成查询,然后将其复制并粘贴到mysql,psql或其他任何东西中。


0
投票
select c from ( select c1 as c from t union all select c2 from t union all select c3 from t union all select c4 from t union all select c5 from t ) x group by c having count(*) > 1

0
投票
select * from tbl where FIND_IN_SET('THIS',concat_ws(",",c1,c2,c3,c4,c5,c6,c7,c8))=1
© www.soinside.com 2019 - 2024. All rights reserved.