在一个表中的不同行和不同列中查找相同的值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的主要内容,如果未能解决你的问题,请参考以下文章

在 Oracle PL/SQL 中,当列的其余值相等时,我可以交换表中两个不同行的同一列的值吗?

SQL - 在同一个表中匹配相同的值,不同的列

UITableView - 具有相同数组的部分中的不同行

SQL 更新表中的所有条目,但在列上插入不同的值

比较一个表中数组不同行的两个值Angular

比较 2 个表中的值并生成具有差异的新表