Выберите строки с соответствующими столбцами из 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