这个查询的输出是什么?为什么?

时间:2016-01-29 04:53:30

标签: sql sql-server

declare @table as table
(
  id int identity(1,1), salary int 
)

insert into @table values(1000)
insert into @table values(2000)
insert into @table values(5000)
insert into @table values(4000)
insert into @table values(1000)
insert into @table values(8000)
insert into @table values(9000)
insert into @table values(6000)
insert into @table values(1000)
insert into @table values(7000)
insert into @table values(3000)

select 
    A.salary 
from 
    @table as A
where 
    (select count(*) 
     from @table B
     where b.salary < A.salary) > 5

3 个答案:

答案 0 :(得分:1)

它将显示大于5000的工资

enter image description here

答案 1 :(得分:0)

在查询中,您将自行加入表格。

并且您正在计算内部表中的记录数,这些记录的数量高于外部表的当前记录。

因此,它将为您提供来自table A的5条记录,这些记录高于内部查询的5条记录

子查询select count(*) from @table B where b.salary < A.salary将为您提供薪水少于table A的记录数

结果就是这样。

答案 2 :(得分:0)

您的查询将返回

   5000
   8000
   9000
   6000
   7000

因为根据您的查询,它会检查记录是否大于6 表的其他记录。 作为内部查询为你计算它。

如果删除1000的所有条目,结果将更改为

  8000
  9000

因为现在只有这两个记录比表中的其他6个记录大。