Это довольно сложно описать. У меня есть таблица с двумя полями: Col1, Col2 со следующими данными:
Col1, Col2
1 10
1 11
1 12
10 1
11 1
13 1
Значения в Col1 могут действовать как значения внешнего ключа в Col2. Я хочу найти все строки для данного значения в Col1, где значение в Col2 появляется в Col1, но где его значение Col2 также является заданным значением. Так, например, если я ищу значение 1 в Col1, возвращаются следующие строки:
Col1, Col2
1 10
1 11
10 1
11 1
Строка с Col1, установленным в 13, не будет возвращена, потому что она не отображается в Col2, где Col1 установлено в 1.
Созданные мной работы sql:
Select T1.*
From Table1 T1
Inner Join Table1 T2 On T1.Col2 = T2.Col1
Where (Exists(Select * From Table1 T3 Where (T2.Col1 = T3.Col1) And (T3.Col2 = T1.Col1)))
And (T1.Col1 = 1)
Возвращает дубликаты строк. Я всегда могу добавить ключевое слово DISTINCT, и это позволит удалить дубликаты. Мой вопрос заключается в том, является ли мой sql действительно правильный способ выбора записей и можно ли это сделать без ключевого слова DISTINCT.