子查询

时间:2009-02-09 06:38:00

标签: database

如何在SELECT和WHERE子句中表示子查询?

3 个答案:

答案 0 :(得分:9)

包含子查询的语句通常采用以下格式之一:

  • WHERE表达式[NOT] IN(子查询)
  • WHERE表达式comparison_operator [ANY |全部](子查询)
  • WHERE [NOT] EXISTS(子查询)

Subquery Fundamentals (SQL Server 2008联机丛书,2009年1月)

答案 1 :(得分:3)

您可以在SELECT和WHERE子句中使用子查询,如下所示:

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
)

答案 2 :(得分:1)

你已经得到了一些好的东西,但是试着看看你是否可以改变你的逻辑,使得子查询发生在from子句中,这样它只运行一次而不是一次为每一行返回主要查询。

子查询确实会从系统中榨取性能。