Выберите строки с соответствующими столбцами из SQL Server

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

ID   Part_Type   Station_Type
---  ---------   ------------
1    5           234
2    5           846
3    5           234
4    6           585
5    6           585
6    7           465

и верните строки 1 и 3, а также 4 и 5. То есть, я хочу вернуть строки, где совпадают два их столбца. Это похоже на этот вопрос: SO Question, но это нужно делать только на одной таблице. Этот запрос найдет соответствие для каждой строки, но мне нужны только строки с соответствующими значениями в двух столбцах. Как мне найти это?

Спасибо

Ответ 1

Вы можете использовать следующее:

select t1.id, t1.part_type, t1.station_type
from yourtable t1
where exists (select part_type, station_type
              from yourtable t2
              where t1.part_type = t2.part_type
                and t1.station_type = t2.station_type
              group by part_type, station_type
              having count(id) > 1)

См. SQL Fiddle with Demo

Ответ 2

select id, part_type, station_type 
from myTable t1
where exists (select 1 from myTable t2
              where t1.part_type = t2.part_type
                  and t1.station_type = t2.station_type
                  and t1.id <> t2.id)

Ответ 3

Я думаю, что self-join будет работать для вас:

SELECT * FROM table t1 
INNER JOIN table t2 ON t1.Part_Type = t2.Part_Type 
  AND t1.Station_Type = t2.Station_Type
  AND t1.Id <> t2.Id