Получение вывода дубликатов и не совпадает с другим столбцом - PullRequest
0 голосов
/ 14 февраля 2019

Пример базы данных:

column1 | column2
--------+---------
1       |  1
2       |  1
3       |  3
4       |  3
5       |  5
6       |  7
7       |  3

Я хотел бы получить вывод

2 | 1
4 | 3
7 | 3

Я использую этот запрос:

SELECT 
    column2, COUNT(*) c 
FROM 
    table 
GROUP BY 
    column2 
HAVING 
    c > 1 

, который возвращает:

1 | 2
3 | 3

Я хотел бы сделать еще один шаг:

SELECT * 
FROM table 
WHERE (column1 != column2 AND having count(*) > 1)

1 Ответ

0 голосов
/ 15 февраля 2019

Первый SQL

SELECT column2, COUNT(*) c 
FROM table 
GROUP BY column2 
HAVING c > 1 

возвращает хороший список значений column2, которые вы хотите.Вам понадобится самостоятельное соединение и вы получите столбцы, которые идут вместе.Это потребует использования псевдонимов таблиц.Вы можете попробовать это следующим образом

SELECT T1.column1, T1.column2 
from table T1
JOIN (SELECT column2, count(*) c
      FROM table
      GROUP BY column2
      HAVING c > 1) T2 ON T2.column2 = T1.column2
WHERE T1.column1 <> T2.column2 


[Примечание автора] Это не тот ответ, который был изначально написан. Справка по стеку: редактирование говорит:

Ожидается, что правки будут существенными и оставят пост лучше, чем вы его нашли.Распространенные причины редактирования включают:

  • Чтобы исправить грамматические и орфографические ошибки
  • Чтобы уточнить значение поста (без изменения этого значения)
  • Включить дополнительную информациювстречается только в комментариях, поэтому вся информация, относящаяся к сообщению, содержится в одном месте
  • Для исправления незначительных ошибок или добавления обновлений по мере старения сообщения
  • Для добавления связанных ресурсов или гиперссылок

Редактирование не соответствует ни одному из критериев.Однако на той же странице написано:

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

Да будет так.

...