1

在 from 子句中使用 select 子句与普通 select 子句相比有什么优势?例如。

select name, age, address from emp where 
 empid = 12.

下面的查询比上面的查询有什么优势。

 select A.name, A.age, A.address from (select
  * from emp where empid = 12) as A.

内部查询创建一个临时视图,并从该结果中选择第一个查询中的字段。对 ?。但是这个问题顶部提到的查询也可以用来获得相同的结果。

有什么好处?谢谢。

4

1 回答 1

5

这种技术可用于在内部查询中派生您不希望在外部查询中显示的结果的一种方式。一个简单的例子,我想看看每个家庭中最年长的人,这是一种方法:

SELECT name, age, address FROM
( 
  SELECT name, age, address, 
    rn = ROW_NUMBER() OVER (PARTITION BY address ORDER BY age DESC)
  FROM dbo.emp
) AS x
WHERE rn = 1;

这样,派生列(本质上是按年龄排列的家庭成员,首先是最老的)不需要是结果集中的列(这也便于过滤)。

而且我敢肯定还有很多其他的(例如不必重复复杂的表达方式);这只是第一个想到的。

在您在问题中发布的情况下,我根本看不到优势。如果你发布一个真实的例子,有人说有优势,我们也许能够解释原因(或者至少他们为什么会这么认为)。

于 2012-08-11T15:03:38.567 回答