Sebenarnya tidak, tidak ada cara yang lebih cerdas untuk menulis ini (tanpa mengunjungi Y dua kali) mengingat X yang cocok dengan myTable.X dan myTable.YY mungkin tidak berasal dari baris yang sama.
Sebagai alternatif, bentuk kueri EXISTS adalah
select *
from myTable A
where exists (select * from Y where A.X = Y.X)
and exists (select * from Y where A.XX = Y.X)
Jika Y berisi nilai X 1,2,3,4,5
, dan x.x = 2
dan x.xx = 4
, keduanya ada (pada record yang berbeda di Y) dan record dari myTable harus ditampilkan di output.
EDIT:Jawaban ini sebelumnya menyatakan bahwa You could rewrite this using _EXISTS_ clauses which will work faster than _IN_
. SEPERTI yang telah ditunjukkan Martin, ini tidak benar (tentu saja bukan untuk SQL Server 2005 dan di atasnya). Lihat tautan
- http://explainextended.com/2009 /06/16/in-vs-join-vs-exists/
- http://sqlinthewild.co .za/index.php/2009/08/17/exists-vs-in/