Это может также работать
select t.*
from Test_Table t
where exists (select 1
from test_table t2
where t2.col1 = t.col2 or t2.Col2 = t.Col1
)
Я хочу найти записи, в которых запись col2 присутствует в CREATE TABLE Test_Table ( Col1 int , Col2 int ); ,
Таблица:
INSERT INTO Test_Table VALUES(111,112),
(112,113),
(114,115),
(116,117),
(117,118),
(118,119);
Записи:
Col1 Col2
-------------
111 112
112 113
116 117
117 118
118 119
Ожидаемый результат:
114,115
Примечание. Запись 115
не отменяется, потому что col1
ее нет col1
.
Моя попытка:
WITH CTE1
AS
(
SELECT Col1, Col2
FROM Test_Table
),
CTE2
AS
(
SELECT t.Col1, t.Col2
FROM Test_Table t
INNER JOIN CTE1 s1
ON s1.Col2 = t.Col1
OR s1.Col2 = t.Col2
)
SELECT DISTINCT * FROM CTE2;
Но все записи.
sql,sql-server,sql-server-2008-r2,
Основываясь на ваших комментариях, я подозреваю, что вы хотите, чтобы либо col1 / col2 существовал в другой строке, либо col1 / col2
select tt.*
from test_table tt
where exists (select 1
from test_table tt2
where -- Ensure not same row
(tt2.col1 <> tt.col1 or tt2.col2 <> tt.col2)
and -- Ensure at least one match
(tt2.col1 = tt.col1 or tt2.col1 = tt.col2 or tt2.col2 = tt.col1 or tt2.col2 = tt.col2)
);