首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

哪位高手能告诉小弟我上这两段SQL的区别

2012-10-13 
谁能告诉我下这两段SQL的区别。1)select * from ( select imsi as 用户IMSI,sum(low_dq_num) as 下行质差MR

谁能告诉我下这两段SQL的区别。
1) select * from ( select imsi as 用户IMSI,sum(low_dq_num) as 下行质差MR总数 from MR_LOW_DQ_IMSI group by imsi ) where rownum<=100

2) select imsi as 用户IMSI,sum(low_dq_num) as 下行质差MR总数 from MR_LOW_DQ_IMSI where rownum<=100 group by imsi 

为什么我用第一句sql能查出100行数据 ,而用第二句就只能查出81行数据



[解决办法]
where rownum<=100
一个是在结果集里面取前100个。
一个是在前100个里面找结果集。

你说有什么不同?
[解决办法]
当然是不一样的。
第一个是:先分组,然后 rownum<=100,这里的条数肯定是100条,
第二个是:先 rownum<=100 再分组,这里的条数肯定是小于等于100条的。
[解决办法]

探讨
引用:

引用:
引用:

第一条语句执行没出错么。。。。明显错了好几个地方。



貌似没错 。

1。子查询没表别名
2。你的子查询里面根本不存ROWNUM 这个列


rownum是个函数。。 oracle。

[解决办法]
探讨
1) select * from ( select imsi as 用户IMSI,sum(low_dq_num) as 下行质差MR总数 from MR_LOW_DQ_IMSI group by imsi ) where rownum<=100

2) select imsi as 用户IMSI,sum(low_dq_num) as 下行质差MR总数 from MR_LOW_DQ_IMSI w……

热点排行