日期:2014-05-17  浏览次数:20782 次

问两个plsql中查询的语句怎么写了?
一,
查询表1中字段b有重复的记录?
二,
查询表1,按字段b排序,取最大的三条记录?



------解决方案--------------------
1
select b from 表1 group by b having count(*)> 1

2
select * from 表1 where rownum <=3 order by b desc ;
------解决方案--------------------
select t.* from (select * from 表1 rder by b desc )t where rownum <=3
------解决方案--------------------
学习
------解决方案--------------------
第二题select * from 表1 where rownum <=3 order by b desc ;这样写是错的。
应该用jiazheng(飛飞)的写法或者使用
select row_number() over (order by b) rn from 表1 where rn <=3
------解决方案--------------------
1
select b from 表1 group by b having count(*)> 1
--这样作的结果是只能查询出字段B的值,这样作有效吗?在实际工作中,大多数情况下,需要的不是这样的结果.要得到的是这条记录的其他字段或者*,所以这句话跟本不实用.
2
select * from 表1 where rownum <=3 order by b desc ;

------解决方案--------------------
(1)select * from 表1 where rownum <=3 order by b desc

(2)select t.* from (select * from 表1 rder by b desc )t where rownum <=3

关于这上面两句,(1)错在什么地方呢。出来的结果好像是一样的啊。
最开始,我把第一句理解为先去3条,再降序,可是好像查询的结果,好像也是先
降序,再取前3条的。能详细说明一下吗?(1)和(2)的区别。
------解决方案--------------------
没人回答,顶
------解决方案--------------------
(1)rownum依據data insert的先後順序不同會有改變.
應該用(2)
------解决方案--------------------
(1)rownum依據data insert的先後順序不同會有改變.
應該用(2)
===========================正解`