select * from test where rownum <=10 order by id desc
bs,这简单还写错 select id,name from (select rownum rn,id,name from test order by id) where rn <=10;
select * from tablename where rownum <= 10 order by id desc
不可以用limit offset嘛?
select * from (select rownum as id from A order by id desc) where rownum <=10
好象yf520gn 写的是正确的 select * from (select rownum as id from A order by id desc) where rownum <=10
select * from table_1 order by id desc limit 10 offset 0
-- 正确应该是这样,我上面的都不对,测过了 select id,name from (select id,name,row_number() over(order by id desc) RN from test) where RN < = 10;
sorry 应该是这样: select * from (select * from tablename order by id desc) where rownum <= 10
select id,name from (select rownum rn,id,name from test order by id desc) where rn <=10;以为这样写是正确的, 发现得到的结果不正确.大家可以测试下. rownum 并没有因为你order by 改变,其实它是个行号,是一个固定的值.可以改写为:select * from (select * from test order by id desc) where rownum <=10; 这样正确
你的ID是指的什么ID?rownum还是字段本来就是ID如果是rownum就用 select * from (select * from tablename order by id desc) where rownum <= 10如果是单独字段就用 SQL codeselect * from test where rownum <=10 order by id desc
--请LZ参考一下:SQL> select * from tab;A B -------- ---------- 0121 60.00 012101 70.00 0122 110.00 0124 230.00 012303 45.00 0123 80.006 rows selectedSQL> select t.a,t.b,rownum from (select a,b,rownum rn from tab order by b desc) t where rownum<=3;A B ROWNUM -------- ---------- ---------- 0124 230.00 1 0122 110.00 2 0123 80.00 3SQL> select t.a,t.b from (select a,b,rownum rn from tab order by b desc) t where rownum<=5;A B -------- ---------- 0124 230.00 0122 110.00 0123 80.00 012101 70.00 0121 60.00SQL>
觉得13楼有理,因为ID如果是指列名,用order by 是不会改变rownum的,因此这个问题的正确答案还要实践一下。 上次有一道题是这样问的:按ID(字段名)排序并选择出第10-15条之间的记录,我用romnum去排序了,当然结果是不对的。此问题我也很想知道答案
支持13楼的说法,rownum是个位列,值是不变的,要选出ID前10的思路应该是先ID排序,再选择排序后的前10行 select * from (select * from test order by id desc) where rownum <=10,应该是对的。
select id,name from (select rownum rn,id,name from test order by id) where rn <=10; 这样是正确的,因为逆序跟选前10条是有先后顺序的
不就是 select * from test t where rownum<=10 order by id desc; 这个有问题吗
不可以用limit offset嘛? 这是MYSQL中的SQL SERVER SELECT TOP 10 * from table order by id desc;MYSQL select * from table limit 10 order by id desc;ORACLE SELECT * FROM TABLE WHERE ROWNUM<11 ORDER BY ID DESC;
没有实践就没有发言权 我已经试过: select * from (select * from table order by id desc) where rownum <=10 ;对 SELECT * FROM TABLE WHERE ROWNUM <11 ORDER BY ID DESC;错 rownum是伪劣,一旦行存在,rownum就固定下来了,SELECT * FROM TABLE WHERE ROWNUM <11 ORDER BY ID DESC是从表头开始选的10行对选出来的10行再排序,这10条并不是整个table值最后10或者最前10
一、原始表数据 select * from s t id name age sex 1 13 sb 20 m 2 14 44 18 f 3 15 uu 21 m 4 16 oo 22 f 5 01 wang 21 m 6 02 chen 24 f 7 03 li 23 f 8 17 李丁 22 m 9 05 wang lin 23 10 06 wu 18 11 07 wu1 18 12 08 张三 22 13 04 阿四 21 m 14 10 李红 23 f 15 11 林林 20 16 12 吴用 19 m 排序一下: select * from s order by id id name age sex 1 01 wang 21 m 2 02 chen 24 f 3 03 li 23 f 4 04 阿四 21 m 5 05 wang lin 23 m 6 06 wu 18 7 07 wu1 18 8 08 张三 22 9 10 李红 23 f 10 11 林林 20 11 12 吴用 19 m 12 13 sb 20 m 13 14 44 18 f 14 15 uu 21 m 15 16 oo 22 f 16 17 李丁 22 m ****************************************************************** 二、引用17楼的语句查询结果:select * from (select * from s order by id desc) where rownum <=10 id name age sex 1 17 李丁 22 m 2 16 oo 22 f 3 15 uu 21 m 4 14 44 18 f 5 13 sb 20 m 6 12 吴用 19 m 7 11 林林 20 8 10 李红 23 f 9 08 张三 22 10 07 wu1 18 ******************************************************************** 三、引用19楼语句查询结果 select id,name from (select rownum rn,id,name from s order by id) where rn <=10 id name 1 01 wang 2 02 chen 3 03 li 4 05 wang lin 5 06 wu 6 13 sb 7 14 44 8 15 uu 9 16 oo 10 17 李丁 **************************************************************************** 四、我的答案: select * from (select id,name,rownum rn from (select id,name from s order by id)) where rn <=10; id name rn 1 01 wang 1 2 02 chen 2 3 03 li 3 4 04 阿四 4 5 05 wang lin 5 6 06 wu 6 7 07 wu1 7 8 08 张三 8 9 10 李红 9 10 11 林林 10 说明:rowmum是一个虚值,它是对查询结果的一个排序,所以你在什么们置使用它rownum的值都有可能是不一样的。
确实是的 谢谢 rownum 在每行数据存在的时候他的值就存在了
SELECT * FROM TABLE_NAME WHERE ROWNUM<=10 ORDER BY ID DESC
select * from (select * from table order by id desc) where rownum <=10 ;
select * from (select * from table order by id desc) where rownum <=10 ;
select id,name from (select rownum rn,id,name from test order by id) where rn <=10;
select * from (select rownum as id from A order by id desc) where rownum <=10
select id,name from (select id,name,row_number() over(order by id desc) RN from test) where RN < = 10;
应该是这样:
select * from (select * from tablename order by id desc) where rownum <= 10
发现得到的结果不正确.大家可以测试下.
rownum 并没有因为你order by 改变,其实它是个行号,是一个固定的值.可以改写为:select * from (select * from test order by id desc) where rownum <=10; 这样正确
select * from (select * from tablename order by id desc) where rownum <= 10如果是单独字段就用
SQL codeselect * from test where rownum <=10 order by id desc
--请LZ参考一下:SQL> select * from tab;A B
-------- ----------
0121 60.00
012101 70.00
0122 110.00
0124 230.00
012303 45.00
0123 80.006 rows selectedSQL> select t.a,t.b,rownum from (select a,b,rownum rn from tab order by b desc) t where rownum<=3;A B ROWNUM
-------- ---------- ----------
0124 230.00 1
0122 110.00 2
0123 80.00 3SQL> select t.a,t.b from (select a,b,rownum rn from tab order by b desc) t where rownum<=5;A B
-------- ----------
0124 230.00
0122 110.00
0123 80.00
012101 70.00
0121 60.00SQL>
上次有一道题是这样问的:按ID(字段名)排序并选择出第10-15条之间的记录,我用romnum去排序了,当然结果是不对的。此问题我也很想知道答案
select * from (select * from test order by id desc) where rownum <=10,应该是对的。
select * from test t where rownum<=10 order by id desc;
这个有问题吗
这是MYSQL中的SQL SERVER
SELECT TOP 10 * from table order by id desc;MYSQL
select * from table limit 10 order by id desc;ORACLE
SELECT * FROM TABLE WHERE ROWNUM<11 ORDER BY ID DESC;
我已经试过:
select * from (select * from table order by id desc) where rownum <=10 ;对
SELECT * FROM TABLE WHERE ROWNUM <11 ORDER BY ID DESC;错
rownum是伪劣,一旦行存在,rownum就固定下来了,SELECT * FROM TABLE WHERE ROWNUM <11 ORDER BY ID DESC是从表头开始选的10行对选出来的10行再排序,这10条并不是整个table值最后10或者最前10
select * from s t
id name age sex
1 13 sb 20 m
2 14 44 18 f
3 15 uu 21 m
4 16 oo 22 f
5 01 wang 21 m
6 02 chen 24 f
7 03 li 23 f
8 17 李丁 22 m
9 05 wang lin 23
10 06 wu 18
11 07 wu1 18
12 08 张三 22
13 04 阿四 21 m
14 10 李红 23 f
15 11 林林 20
16 12 吴用 19 m
排序一下:
select * from s order by id
id name age sex
1 01 wang 21 m
2 02 chen 24 f
3 03 li 23 f
4 04 阿四 21 m
5 05 wang lin 23 m
6 06 wu 18
7 07 wu1 18
8 08 张三 22
9 10 李红 23 f
10 11 林林 20
11 12 吴用 19 m
12 13 sb 20 m
13 14 44 18 f
14 15 uu 21 m
15 16 oo 22 f
16 17 李丁 22 m
******************************************************************
二、引用17楼的语句查询结果:select * from (select * from s order by id desc) where rownum <=10
id name age sex
1 17 李丁 22 m
2 16 oo 22 f
3 15 uu 21 m
4 14 44 18 f
5 13 sb 20 m
6 12 吴用 19 m
7 11 林林 20
8 10 李红 23 f
9 08 张三 22
10 07 wu1 18
********************************************************************
三、引用19楼语句查询结果
select id,name from (select rownum rn,id,name from s order by id) where rn <=10
id name
1 01 wang
2 02 chen
3 03 li
4 05 wang lin
5 06 wu
6 13 sb
7 14 44
8 15 uu
9 16 oo
10 17 李丁
****************************************************************************
四、我的答案:
select * from (select id,name,rownum rn from (select id,name from s order by id)) where rn <=10;
id name rn
1 01 wang 1
2 02 chen 2
3 03 li 3
4 04 阿四 4
5 05 wang lin 5
6 06 wu 6
7 07 wu1 7
8 08 张三 8
9 10 李红 9
10 11 林林 10
说明:rowmum是一个虚值,它是对查询结果的一个排序,所以你在什么们置使用它rownum的值都有可能是不一样的。