Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-在两列中查找重复项_Sql_Sqlite - Fatal编程技术网

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;

酷-这正是我要找的。非常感谢你!