需要帮助理解SQL查询

时间:2011-11-27 14:40:52

标签: sql-server

我在SQL中有一个表Employee_Details,有三列,Name,Age和Salary。我遇到了这个问题,从表格中选择最高薪水。

SELECT * 
FROM Employee_Details e 
WHERE 0 = (
   SELECT count(DISTINCT Salary) 
   FROM Employee_Details 
   WHERE Salary > e.Salary
)

我不知道'0'表示什么。有谁能请给我一个主意。

3 个答案:

答案 0 :(得分:1)

这只是一个条件,表示内部Employee_Details查询中SELECT表的计数必须为0(没有人可以获得比在外部{{1}中选择的员工更高的薪水}})

这样做的方法对我来说有点奇怪......我可能会用这样的东西:

SELECT

应该会产生相同的结果 - 只是我觉得你想要达到的目标要清楚得多。

答案 1 :(得分:0)

从表Employee_details获取所有工资,其中薪水数为0

答案 2 :(得分:0)

您的查询可以写成SELECT TOP 1 WITH TIES * FROM Employee_Details e ORDER BY Salary DESC(用T-SQL方言)。原始查询中的条件检查Salary中大于e值的Salary的不同值的数量是否为零(即,没有更大的Salary行。)