Вероятно, будет неэффективно пытаться написать этот запрос, ссылаясь только на Y
один раз. Однако, учитывая, что вы используете SQL Server 2008, есть варианты, которые можно использовать:
Select ...
From MyTable As T
Where Exists (
Select 1
From Y
Where Y.X = T.X
Intersect
Select 1
From Y
Where Y.X = T.XX
)
Добавление
На самом деле, я могу придумать, как вы могли бы сделать это, не используя Y
более одного раза (ничего не было сказано об использовании MyTable
более одного раза). Тем не менее, это больше по академическим причинам, так как я думаю, что использование моего первого решения, вероятно, будет работать лучше:
Select ...
From MyTable As T
Where Exists (
Select 1
From Y
Where Exists(
Select 1
From MyTable1 As T1
Where T1.X = Y.X
Intersect
Select 1
From MyTable1 As T2
Where T2.XX = Y.X
)
And Y.X In(T.X, T.XX)
)