-
SQL exists et in
Est ce que vous pouvez me confirmez que exists et in ne sont pas equivalent?
Pour moi
Code:
SELECT * FROM x WHERE id IN (Select id FROM x2)
-> renvoie toutes les rows dont x.id est present dans x2
Code:
SELECT * FROM x WHERE EXISTS (Select id FROM x2)
-> renvoie toutes les rows de x a partir du moment ou la requete sur x2 renvoie un resultat
Est ca est ce possible?
Code:
SELECT * FROM x WHERE id EXISTS (Select id FROM x2)
-> similaire au in?
Est ce juste? Ou je me trompe?
Merci
-
Code:
SELECT * FROM myTable1 x1 WHERE EXISTS (SELECT id FROM myTable2 x2 WHERE x1.id = x2.id)
<=>
Code:
SELECT * FROM myTable1 where id in (SELECT id FROM myTable2)
<=>
Code:
SELECT x1.* FROM myTable1 x1, myTable2 x2 WHERE x1.id = x2.id
La troisième méthode étant plus sympa quand même.
-
Salut,
La requête 3 est équivalente aux 2 autres dans le cadre d'une relation 1,1.
Sinon elle renvoie autant de ligne qu'il y en a dans table2 ;)
-