Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-选择薪资最高的人员的姓名_Sql_Select_Max - Fatal编程技术网

SQL-选择薪资最高的人员的姓名

SQL-选择薪资最高的人员的姓名,sql,select,max,Sql,Select,Max,我有一张名为“工人”的表格,其中包括一些人的姓名、工资和工作地点。该表如下所示: |Name|Station|Salary| |Kyle|1 |2200 | |Lisa|2 |2250 | |Mark|3 |1800 | |Hans|4 |1350 | 这听起来可能是一个非常明显的初学者问题,但我无法让它工作。我想选择薪水最高的人的名字。谢谢你的阅读,祝你过得愉快 Select name from table where salary = (

我有一张名为“工人”的表格,其中包括一些人的姓名、工资和工作地点。该表如下所示:

|Name|Station|Salary|
|Kyle|1      |2200  |
|Lisa|2      |2250  |
|Mark|3      |1800  |
|Hans|4      |1350  |
这听起来可能是一个非常明显的初学者问题,但我无法让它工作。我想选择薪水最高的人的名字。谢谢你的阅读,祝你过得愉快

Select name 
from table 
where salary = (select max(salary) from table)
我不知道你是否想包括领带(如果两个人的工资相同,这是最高工资)


这样做的目的是找到最高工资,然后在查询中使用它来查找所有具有该工资的人员。您需要将单词table替换为表名。

您没有提到DBMS:

select name 
from table
order by salary desc
fetch first 1 rows only
如果您的DBMS支持OLAP功能:

select name from (
    select name, row_number() over (order by salary desc) as rn 
    from table
) where rn = 1
试试这个

SELECT top 1 Name
FROM tableName
ORDER BY Salary DESC
试着做:

SELECT TOP name 
FROM yourtable 
WHERE salary = (SELECT MAX(salary) FROM yourtable)

您必须使用子查询获取姓名和最高工资:

select Name, Salary from tb_name where salary=(select max(salary) from tb_name);

你想包括关系吗。如果kyle和lisa都有2250份薪水,你应该同时列出他们吗?因为op没有提到DBMS,我选择了ansi sql解决方案。我的两个都是,不确定fetch是在SQL2008还是SQL2011中首先引入的,行号()从SQL99开始,你的两个答案都不是ansi sql,这没什么错。我只是让op知道。第二个答案使用TSQL row_number over。Fetch是sql server中的一个关键字,指示光标的使用。因此第一个答案不会在sql server上运行,第二个答案只会在sql server上运行。我的答案将运行在任何DBMS系统上。您是否认为这些语句在sqlserver中是否有效与它们是否符合iso/ansi有关?行数()超过(…)例如,SQL2003中的第6.10章中描述了。您可以从下载文档草稿并进行验证。至于fetch first,我似乎找不到该文档的引用,因此我将撤销该引用。如果我找到它,我将发回我现在在文档中找不到fetch first,但这篇wikipedia文章中描述了它:。查找fetch first子句。顺便说一句,SQL Server 2012支持它。这对关系不起作用,我不知道op是否需要关系才能起作用,但如果存在关系,则会删除所有结果。不,不会。您正在按薪资降序选择名字。如果存在关系,则不会返回第二个人。它只会返回第一个结果,而不会返回第二个结果。第二个结果将是tie。请在sqlfiddlecreate表foobar中尝试它(名称varchar(20)null,salary int)插入到foobar选择“测试”,300插入到foobar选择“失败”,300从foobar订单中按工资选择前1*运行并查看。它不适用于ties我的答案是正确的,根据问题,问题只说明名称而不是名称,因此不需要领带。:)太正确了,只是让你知道它不适用于领带。