SQL список всех дубликатов - PullRequest
1 голос
/ 02 июня 2019

Вот проблема самым простым способом:

Предположим, у меня есть база данных с 2 столбцами, c1 и c2. Я хотел бы получить список всех строк, где значение в c2 появляется несколько раз. Например:

c1  c2
1   4
2   3
3   4

Я хочу вывод:

c1  c2
1   4
3   4

Поскольку только в этих строках значение в c2 появляется более одного раза.

Я попробовал следующий запрос:

SELECT * FROM Table
group by c2
having count(c2)>1;

Проблема в том, что это сводится только к одной строке, либо

c1  c2
3   4

или

c1  c2
1   4

Однако, поскольку значения в c1 уникальны, я хочу, чтобы обе строки появлялись. Как я могу это сделать?

Ответы [ 6 ]

3 голосов
/ 03 июня 2019

Просто расширяем ваш sql запрос

SELECT * from Table where C2 in 
(SELECT c2 FROM Table
group by c2
having count(c2)>1);
2 голосов
/ 03 июня 2019

Вы можете сделать что-то вроде этого:

SELECT A.* FROM TABLE A
INNER JOIN 
(SELECT C2 FROM TABLE
group by c2
having count(c2)>1) B ON A.C2 = B.c2
1 голос
/ 03 июня 2019

С EXISTS:

select * from table t
where exists (
  select 1 from table
  where c1 <> t.c1 and c2 = t.c2
)
1 голос
/ 03 июня 2019

Я это довольно элегантно и сделаю свое дело:

SELECT c1,c2 FROM test.`table`
WHERE c2 in (SELECT c2 FROM test.`table`
group by c2
having count(c2)>1);
1 голос
/ 03 июня 2019

Я думаю, что это работает, но, возможно, есть лучший способ:

SELECT C1, C2 AS find_a_better_way FROM tbl WHERE (SELECT COUNT(*) FROM tbl WHERE C2=find_a_better_way LIMIT 2) = 2;
1 голос
/ 03 июня 2019

Возможно, вам придется использовать запрос запроса, чтобы получить это.

SELECT c1, c2 FROM
  (SELECT c1, c2, count(c2) AS B 
    FROM Table 
    GROUP BY c2) AS A
      WHERE A.B > 1 
      ORDER BY A.c2, A.c1

@ Эдуардо Силва, ты прав.Выбор должен быть из исходной таблицы:

SELECT c1, c2 
  FROM my_table
  WHERE c2 IN 
  (SELECT c2 
    FROM my_table 
    GROUP BY c2
    HAVING count(c2)>1)
      ORDER BY c2, c1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...