2015-04-08 3 views
0

В настоящее время у меня есть таблица MySQL, в которой есть несколько столбцов. Ниже приведен пример таблицы с данными:Несколько столбцов с повторяющимися значениями

+----------+---------------------+ 
| hospt_id | file_id | clinic_id | 
+----------+---------------------+ 
| 212837 |  9 |  NULL | 
| 123837 |  14 | 2134319 | 
| 345567 |  9 |  NULL | 
| 123456 |  14 | 2134320 | 
| 123456 |  14 | 2134320 | 
+----------+---------------------+` 

То, что я пытаюсь сделать, это написать запрос, который возвращает все записи, в которых три столбца являются repeate.

Например, последние две строки повторяются. Поэтому я хотел бы вернуть их. Я знаю, как делать повторные поиски для одного столбца, но не знаю, как это сделать для нескольких столбцов.

ответ

4

Вам просто нужно группировать все три записи, чтобы получить количество строк в каждой группе. Затем вы можете отфильтровать его до тех, которые содержат несколько совпадающих строк в предложении having.

select hospt_id, file_id, clinic_id, count(*) 
    from <table> 
    group by hospt_id, file_id, clinic_id 
    having count(*) > 1; 

Вот демо: http://sqlfiddle.com/#!9/91bf9/2