2009-02-09 8 views

Répondre

9

Les déclarations qui contiennent les sous-requêtes prennent généralement l'un de ces formats:

  • OU expression [NOT] IN (sous-requête)
  • where expression [TOUT | ALL] (sous-requête)
  • OU [NOT] EXISTS (sous-requête)

Subquery Fundamentals(SQL Server 2008 en ligne, Janvier 2009)

+0

Veuillez noter que de nombreuses sous-requêtes sont mieux représentées comme une jointure à une table dérivée (bien que l'optimiseur soit de mieux en mieux traduit). –

3

Vous pouvez utiliser les sous-requêtes dans les clauses SELECT et WHERE comme celui-ci :

select 
    c.customerid, 
    (
    select sum(i.amount) as totalspent 
    from item i 
    where i.customerid = c.customerid 
) as totalspent 
from customer c 
where exists 
(
    select * 
    from purchase p 
    where p.customerid = c.customerid 
) 
1

vous avez obtenu quelques bons anwsers, mais essayez de voir si vous pouvez modifier votre logique telle que la sous-requête a lieu dans la clause, de sorte qu'il est exécuté qu'une seule fois au lieu d'une fois pour chaque ligne renvoyée par la requête principale.

Les sous-requêtes aspirent vraiment les performances d'un système.

+0

D'accord. Les sous-requêtes doivent être utilisées avec parcimonie. – jeremcc

+0

Vraiment, beaucoup de choses que vous pouvez faire avec les sous-requêtes que vous pourriez aussi faire avec les jointures - avec la commande EXPLAIN vous pouvez alors voir ce qui est le plus rapide. – Piskvor