J'ai une requête où j'utilise une sous-requête, et je voudrais réécrire dans une jointure, pour avoir de meilleures performances.Comment réécrire une sous-requête pour utiliser des jointures lorsque vous avez utilisé DISTINCT dans la sous-requête?
La sous-requête utilise DISTINCT car il existe de nombreux enregistrements, et le problème que j'ai est qu'ils se retrouvent plusieurs fois dans la jointure lorsque j'utilise la jointure.
Alors, comment puis-je réécris une requête comme celui-ci à utiliser rejoindre:
SELECT *
FROM table1 a
JOIN table2 b
ON b.field1 = a.field1
WHERE b.field3 = 1531
AND a.field4 = 0
AND a.field5 IN (SELECT DISTINCT field5
FROM table3
WHERE field6 = 172)
n'est pas après que JOIN soit une table? –
@Srinivas - si vous demandez si c'est la syntaxe légale, oui, vous pouvez joindre au résultat d'une autre requête select comme s'il s'agissait d'une table. Je ne sais pas si c'est ANSI-92 ou pas si; Je regarde mon propre code MS SQL Server. –
la requête est correcte, après JOIN il y a une table qui est incluse dans un(), c'est la sous-requête, qui calcule la table. – Pentium10