什么是优化查询,用于提取一行的各列,这些列具有特定列的最小值.
例如显示姓名和持有最低工资的所有人的工资,从下表中只有三列中的永久雇员
员工(姓名,员工类型,薪水)
EmployeeType可以是永久性的或临时性的
我已经知道一个解决方案,但我认为可能有更好的方法.
我的解决方案是:
Select E.* from Employee Where
Salary = (Select Min(Salary) From Employee Where EmployeeType='P')
and EmployeeType='P'
Run Code Online (Sandbox Code Playgroud)
SELECT TOP 1 *
FROM Employee
WHERE EmployeeType = 'P'
ORDER BY Salary ASC
Run Code Online (Sandbox Code Playgroud)
在MySQL中,你可以使用LIMIT 1
.在Oracle中,您可以使用结合的内部查询WITH rownum = 1
.
这将始终返回一行,即使有几个员工分享最低工资.如果要指定要返回哪些行,可以添加其他排序列.
如果你想要返回所有这些行,OP的查询将是最优的:
SELECT *
FROM Employee
WHERE Salary = (
SELECT MIN(Salary)
FROM Empoyee
WHERE EmployeeType = 'P'
)
AND EmployeeType = 'P'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5007 次 |
最近记录: |