A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马丁巍 中级黑马   /  2012-12-13 19:32  /  1571 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

比如有5个人,字段有fAge,fName,fSalary,能够用一个查询语句直接查找到最高工资那个人的详细信息吗? 我只知道用order by 按照降序排序 看第一个人的信息,有方法能直接select 到那一个人的信息吗?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

7 个回复

倒序浏览
select * from table where fsalary=(select max(fsalary) from table)

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
select * from table order by fSalary desc limit 0,1;
解释:
*表示查询所有字段;
order by是通过某个字段进行排序;
desc是降序排序,从大到小排序,asc是从小到大进行排序,以fSalary字段进行desc排序,工资最高的人就排在最上面;
limit 0,1是从第0个位置开始取记录,取多少条记录呢?  1就是取一条,这样就取到了降序排序后的第一条记录;
综合而言就取得了工资最高的那个人的详细信息了!


评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 张海涛 于 2012-12-13 22:28 编辑

{:soso_e121:}
回复 使用道具 举报
谢谢大家,我自己太粗心了,后面的视屏讲到了,限制结果集行数就行了
select top 1 * from table order by fSalary desc  和你说的那个select * from table order by fSalary desc limit 0,1;
是一回事吗
回复 使用道具 举报
select fAge,fName,MAX(fSalary) fSalary
from table
不用排序,直接用MAX函数找到工资例中的最大数。空格后加fSalary是别名。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
对,确实不用排序,因为找的是最大工资的,用max就行了
回复 使用道具 举报
马铿 中级黑马 2012-12-14 10:06:43
8#
select fAge,fName,fSalary  from table where fsalary=(select max(fsalary) from table)
先查出最高工资,然后把该最高工资当做条件,再做一次过滤查询技能得出结果

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马