在一个表中的不同行和不同列中查找相同的值SQL
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在一个表中的不同行和不同列中查找相同的值SQL相关的知识,希望对你有一定的参考价值。
我有一张大桌子,上面有数十列,超过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。
任何好主意?谢谢
答案
update table set c1='THIS' where c2='THIS' or c3='THIS' or c4='THIS' or ...
大概您可以使用编辑器来快速生成查询,然后将其复制并粘贴到mysql,psql或其他任何东西中。
另一答案
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
另一答案
select * from tbl where FIND_IN_SET('THIS',concat_ws(",",c1,c2,c3,c4,c5,c6,c7,c8))=1
以上是关于在一个表中的不同行和不同列中查找相同的值SQL的主要内容,如果未能解决你的问题,请参考以下文章