rownum怎么样返回总行数的一半? 关于那个座位的题目,我想先找出按年纪升序排出的一半,再找出按年纪降序排出的一半,然后合并视图,就可以达到这个效果了。但ROWNUM=1是返回第一条,<9是返回前九条,怎么指定ROWNUM返回总记录数量的一半呢?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SQL> create table guests( 2 id int primary key, 3 gname varchar(20), 4 gage int 5 );Table created.SQL>SQL> select * from guests; ID GNAME GAGE---------- -------------------- ---------- 1 A60 60 2 A70 70 3 A30 30 4 A90 90 5 A50 50 6 A10 10 7 A40 40 8 A80 80 9 A20 20 10 A100 10010 rows selected.SQL> select a.GNAME,a.GAGE,b.GNAME,b.GAGE 2 from ( 3 select rownum as sno, id,GNAME,GAGE from 4 (select ID,GNAME,GAGE from guests order by GAGE desc ,ID desc) 5 ) a 6 , 7 ( 8 select rownum as sno, id,GNAME,GAGE from 9 (select ID,GNAME,GAGE from guests order by GAGE ,ID ) 10 ) b 11 where a.sno=b.sno 12 and a.GAGE>b.GAGE or (a.GAGE=b.GAGE and a.id>b.id);GNAME GAGE GNAME GAGE-------------------- ---------- -------------------- ----------A100 100 A10 10A90 90 A20 20A80 80 A30 30A70 70 A40 40A60 60 A50 50SQL> rownum<=(select count(*)/2 from tablename) 大哥,很感谢您。我刚才自己也尝试了一下,想用这样的思想得出结果:创建一个表列出最年长的一半,创建另一个表列出最年轻的一半,然后合并显示。我已经创建好了,可是求教怎么合并成一个表,横向合并。谢谢。 表A 表B桌子左边 桌子右边 ----------- ------------ 100岁的人 5岁的人 90岁的人 10岁的人 80岁的人 20岁的人 60岁的人 30岁的人 50岁的人 40岁的人 现在求教怎么合并成一个表C:桌子左边 | 桌子右边 ----------------------- 100岁的人 | 5岁的人 90岁的人 | 10岁的人 80岁的人 | 20岁的人 60岁的人 | 30岁的人 50岁的人 | 40岁的人 谢谢 把左右两个记录集按a.rownum=b.rownum来联接一下就行了。 mysql 操作问题请教 一道sql面试题 postgresql数据库之间如何连接?如何传递数据? update 只更新改变的数据,有没有简便的方法? 求查询语句! SQL文实现数据插入的自动发番 mysql自动增加字段必须是什么类型呢? 一个sql语句问题请教 一句sql语句能实现这种功能吗?急 如何在MySQL中查找某一字段的值包含给定字符串(不一定完全匹配)的记录。 You have an error in your SQL syntax???错误如下,怎么办? mysqldump怎么批量导入所有数据库?
2 id int primary key,
3 gname varchar(20),
4 gage int
5 );Table created.SQL>
SQL> select * from guests; ID GNAME GAGE
---------- -------------------- ----------
1 A60 60
2 A70 70
3 A30 30
4 A90 90
5 A50 50
6 A10 10
7 A40 40
8 A80 80
9 A20 20
10 A100 10010 rows selected.SQL> select a.GNAME,a.GAGE,b.GNAME,b.GAGE
2 from (
3 select rownum as sno, id,GNAME,GAGE from
4 (select ID,GNAME,GAGE from guests order by GAGE desc ,ID desc)
5 ) a
6 ,
7 (
8 select rownum as sno, id,GNAME,GAGE from
9 (select ID,GNAME,GAGE from guests order by GAGE ,ID )
10 ) b
11 where a.sno=b.sno
12 and a.GAGE>b.GAGE or (a.GAGE=b.GAGE and a.id>b.id);GNAME GAGE GNAME GAGE
-------------------- ---------- -------------------- ----------
A100 100 A10 10
A90 90 A20 20
A80 80 A30 30
A70 70 A40 40
A60 60 A50 50SQL>
rownum<=(select count(*)/2 from tablename)
大哥,很感谢您。
我刚才自己也尝试了一下,想用这样的思想得出结果:
创建一个表列出最年长的一半,创建另一个表列出最年轻的一半,然后合并显示。
我已经创建好了,可是求教怎么合并成一个表,横向合并。谢谢。 表A 表B桌子左边 桌子右边
----------- ------------
100岁的人 5岁的人
90岁的人 10岁的人
80岁的人 20岁的人
60岁的人 30岁的人
50岁的人 40岁的人
现在求教怎么合并成一个表C:桌子左边 | 桌子右边
-----------------------
100岁的人 | 5岁的人
90岁的人 | 10岁的人
80岁的人 | 20岁的人
60岁的人 | 30岁的人
50岁的人 | 40岁的人 谢谢