在 SQL table 的多个列中查找重复值并计数
Finding duplicate values in multiple colums in a SQL table and count
我有以下 table 结构:
id num1 num2 num3 ...
1 1 2 3
2 1 3 2
3 1 2 3
.
.
.
我使用以下命令来显示重复项和计数:
SELECT COUNT(num1), num1, num2, num3
FROM table
GROUP BY num1, num2, num3
HAVING (COUNT(num1) > 1) AND (COUNT(num2) > 1) AND (COUNT(num3) > 1)
这个命令给了我 2 的计数。我想知道第二行如何也可以算作重复。
将运算符更改为 OR 将return如您所愿
SELECT COUNT(num1), num1, num2, num3
FROM table
GROUP BY num1, num2, num3
HAVING (COUNT(num1) > 1) OR (COUNT(num2) > 1) OR (COUNT(num3) > 1)
您需要标量函数 MIN()
and MAX()
以升序获取每行的 3 个整数值,以便您可以创建一个唯一的三元组来分组:
SELECT COUNT(*) count,
MIN(num1, num2, num3) num_1,
num1 + num2 + num3 - MIN(num1, num2, num3) - MAX(num1, num2, num3) num_2,
MAX(num1, num2, num3) num_3
FROM tablename
GROUP BY num_1, num_2, num_3
HAVING COUNT(*) > 1;
参见demo。
我有以下 table 结构:
id num1 num2 num3 ...
1 1 2 3
2 1 3 2
3 1 2 3
.
.
.
我使用以下命令来显示重复项和计数:
SELECT COUNT(num1), num1, num2, num3
FROM table
GROUP BY num1, num2, num3
HAVING (COUNT(num1) > 1) AND (COUNT(num2) > 1) AND (COUNT(num3) > 1)
这个命令给了我 2 的计数。我想知道第二行如何也可以算作重复。
将运算符更改为 OR 将return如您所愿
SELECT COUNT(num1), num1, num2, num3
FROM table
GROUP BY num1, num2, num3
HAVING (COUNT(num1) > 1) OR (COUNT(num2) > 1) OR (COUNT(num3) > 1)
您需要标量函数 MIN()
and MAX()
以升序获取每行的 3 个整数值,以便您可以创建一个唯一的三元组来分组:
SELECT COUNT(*) count,
MIN(num1, num2, num3) num_1,
num1 + num2 + num3 - MIN(num1, num2, num3) - MAX(num1, num2, num3) num_2,
MAX(num1, num2, num3) num_3
FROM tablename
GROUP BY num_1, num_2, num_3
HAVING COUNT(*) > 1;
参见demo。