tSQL查询:取表中最小值的整行

  • 本文关键字:最小值 查询 tSQL sql tsql
  • 更新时间 :
  • 英文 :


如果一个行中某一列的值是最小的,那么这个优化后的查询是什么呢?

用于如下表

显示永久雇员类别中持有最低工资的所有人员的姓名和工资

Employee (Name, EmployeeType, Salary)

EmployeeType可以是Permanent或Temporary
我已经知道一个解决方案,但我认为可能有更好的方法。我的解决方案是:

Select E.*  from Employee Where 
Salary = (Select Min(Salary) From Employee Where EmployeeType='P') 
and EmployeeType='P'
SELECT TOP 1 *
FROM Employee
WHERE EmployeeType = 'P'
ORDER BY Salary ASC

在MySQL中,可以使用LIMIT 1。在Oracle中,您可以将内部查询与WITH rownum = 1结合使用。

这将始终返回一行,即使有几个员工共享最低工资。如果要指定返回哪些行,可以添加额外的排序列。

如果您想返回所有这样的行,OP的查询将是最优的:

SELECT *
FROM Employee
WHERE Salary = (
    SELECT MIN(Salary)
    FROM Empoyee
    WHERE EmployeeType = 'P'
)
AND EmployeeType = 'P'

如果最低工资由多个员工共享,您可以使用TOP (1) WITH TIES结构检索所有员工:

SELECT TOP (1) WITH TIES *
FROM Employee
WHERE EmployeeType = 'P'
ORDER BY Salary
参考:

  • 顶部(transact - sql)

最新更新