黑马程序员技术交流社区

标题: 请教 SQL 语句 查询 信息 [打印本页]

作者: 黑马丁巍    时间: 2012-12-13 19:32
标题: 请教 SQL 语句 查询 信息
比如有5个人,字段有fAge,fName,fSalary,能够用一个查询语句直接查找到最高工资那个人的详细信息吗? 我只知道用order by 按照降序排序 看第一个人的信息,有方法能直接select 到那一个人的信息吗?
作者: 吴步兵    时间: 2012-12-13 21:49
select * from table where fsalary=(select max(fsalary) from table)
作者: 张海涛    时间: 2012-12-13 22:20
select * from table order by fSalary desc limit 0,1;
解释:
*表示查询所有字段;
order by是通过某个字段进行排序;
desc是降序排序,从大到小排序,asc是从小到大进行排序,以fSalary字段进行desc排序,工资最高的人就排在最上面;
limit 0,1是从第0个位置开始取记录,取多少条记录呢?  1就是取一条,这样就取到了降序排序后的第一条记录;
综合而言就取得了工资最高的那个人的详细信息了!



作者: 张海涛    时间: 2012-12-13 22:22
本帖最后由 张海涛 于 2012-12-13 22:28 编辑

{:soso_e121:}
作者: 黑马丁巍    时间: 2012-12-13 23:41
谢谢大家,我自己太粗心了,后面的视屏讲到了,限制结果集行数就行了
select top 1 * from table order by fSalary desc  和你说的那个select * from table order by fSalary desc limit 0,1;
是一回事吗
作者: 赵小江    时间: 2012-12-14 00:16
select fAge,fName,MAX(fSalary) fSalary
from table
不用排序,直接用MAX函数找到工资例中的最大数。空格后加fSalary是别名。
作者: 黑马-张扬    时间: 2012-12-14 09:58
对,确实不用排序,因为找的是最大工资的,用max就行了
作者: 马铿    时间: 2012-12-14 10:06
select fAge,fName,fSalary  from table where fsalary=(select max(fsalary) from table)
先查出最高工资,然后把该最高工资当做条件,再做一次过滤查询技能得出结果




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2