主题:一个简单问题
zmaxlyxh
[专家分:1210] 发布于 2006-03-23 19:44:00
大家好,刚学习SQL,请教2个问题.
1:假如有一员工表,我想查询工资第3高的员工的姓名.(工资,员工姓名字段存在)
2:假如有一员工表,我想查询各个部门工资第3高的员工(工资,部门员工姓名字段存在)
请大家帮我下!
回复列表 (共12个回复)
沙发
无法阻挡 [专家分:890] 发布于 2006-03-23 20:02:00
select top 3 姓名,工资 from table1 order by 工资 desc
select top 3 姓名,工资,部门 from table1 where 部门='测试部' order by 工资 desc
板凳
zmaxlyxh [专家分:1210] 发布于 2006-03-23 20:13:00
前3和第3高是有区别的吧?第2个问题是各个部门不是指定某一部门哦~
3 楼
无法阻挡 [专家分:890] 发布于 2006-03-23 20:17:00
select top 3 姓名,工资,部门 from table1 where 部门 in (select 部门 from 部门表) order by 工资
这样可以分别按部门查处
第3个的话要用游标了 不知道你是否学了
游标的
FATCH ABSSOLUTE 3 这个方法
4 楼
zmaxlyxh [专家分:1210] 发布于 2006-03-23 20:36:00
就麻烦写个完整的查询工资第3高的员工的姓名(第3不是前3)
5 楼
无法阻挡 [专家分:890] 发布于 2006-03-23 20:49:00
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 楼
zmaxlyxh [专家分:1210] 发布于 2006-03-23 21:03:00
按照拟订写法,结合示例表,字段我改了下~
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 楼
无法阻挡 [专家分:890] 发布于 2006-03-23 21:07:00
等下我看下 时间长不写了。。。
8 楼
无法阻挡 [专家分:890] 发布于 2006-03-23 21:15:00
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 楼
zmaxlyxh [专家分:1210] 发布于 2006-03-23 21:31:00
呵呵 可以了 再问下:
1 declare aaaa scroll cursor for (这是什么类型游标)
2 declare @bbbb cursor(这里为什么有个@符号而上面怎么没有)
10 楼
无法阻挡 [专家分:890] 发布于 2006-03-23 21:48:00
那个是个@是变量的标识符 我把游标设成变量 你就可以方便的更改了
游标默认是只进的
也就是FROWARD ONLY
这个类型的游标只能做MOVENEXT的动作
不能定位 所以只能用这个全能形的SCROLL 呵呵
SCROLL指定确保通过游标完成的定位更新或定位删除可以成功
我来回复