SQL - найти дубликаты в двух столбцах - PullRequest
3 голосов
/ 05 июля 2010

У меня есть таблица с четырьмя столбцами, где col1 & col2 содержат аналогичные значения (INT).Теперь я хочу знать, есть ли дубликаты в col1 и / или col2.т.е.

col1 | col2
-----+-----
111  | 222
333  | 444
111  | 333
555  | 111

→ Дубликаты: 111 (3x) и 333 (2x).

Я использую SQLite, но я думаю, что это основной вопрос SQL.1012 *

Ответы [ 3 ]

6 голосов
/ 05 июля 2010

Чтобы подсчитать каждый элемент, используйте 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 голос
/ 05 июля 2010

Если у вас есть два столбца, в которых значения совместимы (то есть 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;
0 голосов
/ 05 июля 2010

Присоедините таблицу к себе, чтобы увидеть, есть ли дубликаты.

select t1.col1, t2.col2
from table t1 inner join table t2 
  on t1.col1 = t2.col2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...