我们一般都会这样写:
select name from table where salary = (select max(salary) from table);
答: select max(salary) from table 这句话就是取出公司所有人员的最大工资
然後抓出最高工资的人员是谁,也就是题目所要求的答案
为什么不能这样写?
select name,max(salary) from table;
答: 这句话是抓出员工所拿到的最高薪资是多少,比如一个员工可能每个月拿的工资不一样
而你这句话就是抓这个员工拿得最高时候的薪资是多少,只是针对这个员工
而题目的要求是要抓所有员工中拿到最高薪资的人员.
不知道是不是明白.呵呵
用数据举例
name salary
A 3000
B 4000
B 5000
A 2000
select max(salary) from table ----是取出最高薪资,得到的结果是5000
select name,max(salary) from table----这是取出每个员工最高工资拿多少,得到的结果如下
A 3000
B 5000
这么写,sql语法都通不过吧!
一般要这么写是:select name,max(salary) from table group by name;
但是这个会查询出一组值,与你想要的结果不符合。
你可以这样理解,select name from table;可能返回N行而select max(salary) from table;始终只能返回一行.他们要一起需要联合group by 分类.
可以这样写:
select top 1 name,salary from table order by salary desc
max是聚合函数 你搜搜聚合函数的用法