首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询:用表中的最小值获取整行

问SQL查询:用表中的最小值获取整行
EN

Stack Overflow用户
提问于 2011-07-20 02:50:49
回答 2查看 5.2K关注 0票数 1

提取一行中包含特定列的最小值的各种列的优化查询是什么?

例如,在下表中显示在长期雇员类别中持有最低工资的所有人员的姓名和薪资,该表中只有三列。

员工(姓名、EmployeeType、薪资)

EmployeeType可以是永久的,也可以是暂时的

我已经知道了一个解决办法,但我认为可能有更好的办法。

我的解决办法是:

代码语言:javascript
复制
Select E.*  from Employee Where 
Salary = (Select Min(Salary) From Employee Where EmployeeType='P') 
and EmployeeType='P'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-20 05:43:55

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

代码语言:javascript
复制
SELECT TOP (1) WITH TIES *
FROM Employee
WHERE EmployeeType = 'P'
ORDER BY Salary

参考资料:

票数 1
EN

Stack Overflow用户

发布于 2011-07-20 03:13:22

代码语言:javascript
复制
SELECT TOP 1 *
FROM Employee
WHERE EmployeeType = 'P'
ORDER BY Salary ASC

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

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

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

代码语言:javascript
复制
SELECT *
FROM Employee
WHERE Salary = (
    SELECT MIN(Salary)
    FROM Empoyee
    WHERE EmployeeType = 'P'
)
AND EmployeeType = 'P'
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6756466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档