SQL MAX()函数

SQL MAX()函数,sql,Sql,假设我有一个表workers(ID、Name、Salary)中的workers列表 如果我想知道一个薪水最高的人的名字,我会这样做: SELECT Name FROM ( SELECT Name, MAX(Salary) FROM Workers ) as T 我只是想知道我是否可以只使用一个SELECTQuery?如果这是一个愚蠢的问题,我很抱歉,但我对SQL完全不熟悉,有限制的订单应该可以使用 SELECT Name, Salary FROM Workers ORDER BY Salary

假设我有一个表workers(ID、Name、Salary)中的workers列表
如果我想知道一个薪水最高的人的名字,我会这样做:

SELECT Name
FROM
(
SELECT Name, MAX(Salary)
FROM Workers
) as T

我只是想知道我是否可以只使用一个
SELECT
Query?如果这是一个愚蠢的问题,我很抱歉,但我对
SQL

完全不熟悉,有限制的订单应该可以使用

SELECT Name, Salary
FROM Workers
ORDER BY Salary DESC
LIMIT 1
如果有多人并列获得最高工资,而您想要他们全部:

SELECT Name, Salary
FROM Workers
WHERE Salary = (select max(Salary) from Workers)

超过1个名称的薪资=最大(薪资)


这将选择所有具有最高薪资的姓名,即使存在关系

select name from
workers w1
left join workers w2 on w2.salary > w1.salary
group by name
having count(w2.salary) = 0

什么样的数据库?对于SQL Server,请参见:如果有多个名称的salary=max(salary),该怎么办?很好。Limit也适用于postgresql。下面是在其他SQL中限制的方法的摘要。现在,您使用2个SELECT语句。。。原始问题只需要一个选择。在mssql中工作得很好!我想我在这个问题上还不够清楚,我只想选择工资最高的工人的名字,而不是他的工资。在我的情况下,如果有更多的工人有一份最高的工资并不重要。那么,如果彼得和约翰都挣50美元,你想用什么名字来回报@аааааааааааа107?两个答案中的任意一个?没关系,彼得或约翰,或者两者都有。@好的,那么你接受的答案(模糊树)不是最好的答案(在我看来)。无论是“Top 1”还是“limit 1”(取决于数据库),都会为您提供更好的服务。
select name from
workers w1
left join workers w2 on w2.salary > w1.salary
group by name
having count(w2.salary) = 0