SQL-在两列中查找重复项
我有一个有四列的表,其中SQL-在两列中查找重复项,sql,sqlite,Sql,Sqlite,我有一个有四列的表,其中col1和col2包含类似的值(INT)。我现在想知道col1和/或col2中是否有重复项。i、 e col1 | col2 -----+----- 111 | 222 333 | 444 111 | 333 555 | 111 → 重复项:111(3x)和333(2x) 我正在使用SQLite,但我认为这是一个基本的SQL问题。要获得每个元素的计数,请在子查询中使用UNION ALL,然后根据结果分组: SELECT col, COUNT(*) FROM (
col1
和col2
包含类似的值(INT)。我现在想知道col1
和/或col2
中是否有重复项。i、 e
col1 | col2
-----+-----
111 | 222
333 | 444
111 | 333
555 | 111
→ 重复项:111
(3x)和333
(2x)
我正在使用SQLite,但我认为这是一个基本的SQL问题。要获得每个元素的计数,请在子查询中使用UNION ALL,然后根据结果分组:
SELECT col, COUNT(*)
FROM
(
SELECT col1 AS col FROM Table1
UNION ALL
SELECT col2 FROM Table1
) T1
GROUP BY col
如果您只希望看到重复的值,请添加
HAVING COUNT(*)>1
。将表连接到自身以查看是否有重复的值
select t1.col1, t2.col2
from table t1 inner join table t2
on t1.col1 = t2.col2
如果有两列的值是兼容的(也就是说,一列中的333表示与另一列中的333相同的“东西”),则这称为重复组。这违反了法律 如果值位于单个列中,则很容易找到重复项:
CREATE TABLE pairs (
pair_id INT,
value INT,
PRIMARY KEY (pair_id, value)
);
INSERT INTO pairs VALUES
(1, 111), (1, 222),
(2, 333), (2, 444),
(3, 111), (3, 333),
(4, 555), (4, 111);
SELECT value, COUNT(*)
FROM pairs
GROUP BY value
HAVING COUNT(*) > 1;
酷-这正是我要找的。非常感谢你!