我有一个包含四列的表格,其中col1
& col2
包含类似的值(INT)。我现在想知道col1
和/或col2
中是否有重复项。即,
col1 | col2
-----+-----
111 | 222
333 | 444
111 | 333
555 | 111
→重复:111
(3x)和333
(2x)。
我正在使用SQLite,但我认为这是一个基本的SQL问题。
答案 0 :(得分:6)
要获取每个元素的计数,请在子查询中使用UNION ALL,然后在结果上使用GROUP BY:
SELECT col, COUNT(*)
FROM
(
SELECT col1 AS col FROM Table1
UNION ALL
SELECT col2 FROM Table1
) T1
GROUP BY col
如果您只想查看重复的值,请添加HAVING COUNT(*) > 1
。
答案 1 :(得分:1)
如果您有两列值兼容(即,一列中的333表示与另一列中333相同的“事物”),则称为重复组。这违反了First Normal Form。
如果值在单个列中,则查找重复项很容易:
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;
答案 2 :(得分:-1)
将表连接到自身以查看是否有任何重复。
select t1.col1, t2.col2
from table t1 inner join table t2
on t1.col1 = t2.col2