回 帖 发 新 帖 刷新版面

主题:一个简单问题

大家好,刚学习SQL,请教2个问题.
1:假如有一员工表,我想查询工资第3高的员工的姓名.(工资,员工姓名字段存在)
2:假如有一员工表,我想查询各个部门工资第3高的员工(工资,部门员工姓名字段存在)
请大家帮我下!

回复列表 (共12个回复)

沙发

select top 3 姓名,工资 from table1   order by 工资 desc
select top 3 姓名,工资,部门 from table1  where 部门='测试部' order by 工资 desc

板凳

前3和第3高是有区别的吧?第2个问题是各个部门不是指定某一部门哦~

3 楼

select top 3 姓名,工资,部门 from table1 where 部门 in (select 部门 from 部门表) order by 工资
这样可以分别按部门查处 
第3个的话要用游标了 不知道你是否学了
游标的
FATCH ABSSOLUTE 3 这个方法

4 楼

就麻烦写个完整的查询工资第3高的员工的姓名(第3不是前3)

5 楼

declare @myco cursor--声明一个游标变量
declare mycor cursor for 
select 姓名,工资 from table1   order by 工资 desc 定义一个游标 --要改查找条件改这里就行

set @myco=mycor 赋直
open @myco 打开
fetch absolute 3 from @myco  提取第3条纪律

6 楼

按照拟订写法,结合示例表,字段我改了下~
declare @myco cursor--声明一个游标变量
declare mycor cursor for select 姓名,目前薪资 from 飞狐工作室 
order by 目前薪资 desc --定义一个游标 要改查找条件改这里就行
set @myco=mycor --赋直
open @myco --打开
fetch absolute 3 from @myco  --提取第3条记录
出现下面提示:
服务器: 消息 16915,级别 16,状态 1,行 14
名为 'mycor' 的游标已存在。
服务器: 消息 16905,级别 16,状态 1,行 17
游标已打开。
服务器: 消息 16911,级别 16,状态 1,行 18
fetch: 提取类型 absolute 不能用于只进游标。

7 楼

等下我看下 时间长不写了。。。

8 楼

declare aaaa scroll cursor for   ---//忘写游标类型了
(select 姓名,工资 from table1   order by 工资 desc)--- 定义一个游标 --要改查找条件改这里就行
declare @bbbb cursor--声明一个游标变量
set @bbbb=aaaa ---赋直
open @bbbb ---打开
fetch absolute 3 from @bbbb  ---提取第3条纪律
close aaaa
deallocate aaaa

9 楼

呵呵 可以了 再问下:
1 declare aaaa scroll cursor for (这是什么类型游标)
2 declare @bbbb cursor(这里为什么有个@符号而上面怎么没有)

10 楼

那个是个@是变量的标识符  我把游标设成变量 你就可以方便的更改了
游标默认是只进的 
也就是FROWARD ONLY
这个类型的游标只能做MOVENEXT的动作
不能定位 所以只能用这个全能形的SCROLL 呵呵
SCROLL指定确保通过游标完成的定位更新或定位删除可以成功

我来回复

您尚未登录,请登录后再回复。点此登录或注册