一桌人在长桌上吃饭,分成两排,最年长的人和最年轻的人面对面,次年长的人和次年轻的人面对面,以此类推。
希望的输入是桌子左边 | 桌子右边
-----------------------
100岁的人 | 5岁的人
90岁的人 | 10岁的人
80岁的人 | 20岁的人
60岁的人 | 30岁的人
50岁的人 | 40岁的人 人的姓名和生日都可以,求这样的排序配对显示。
老师提醒可以用临时表和ROWNUM。
谢谢!!!!!!
希望的输入是桌子左边 | 桌子右边
-----------------------
100岁的人 | 5岁的人
90岁的人 | 10岁的人
80岁的人 | 20岁的人
60岁的人 | 30岁的人
50岁的人 | 40岁的人 人的姓名和生日都可以,求这样的排序配对显示。
老师提醒可以用临时表和ROWNUM。
谢谢!!!!!!
如果是在MySQL中实现可以如下。既然是作业,你自己多少要学点东西吧。就不解释SQL语句了,你自己查书看一下吗,都是标准的SQL语句。
MySQL不象ORACEL可以用rownum.mysql> create table guests(
-> id int primary key,
-> gname varchar(20),
-> gage int
-> );
Query OK, 0 rows affected (0.13 sec)mysql>
mysql> 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 | 100 |
+----+-------+------+
10 rows in set (0.00 sec)mysql> select a1.gname,a1.gage,a2.gname,a2.gage
-> from guests a1 , guests a2
-> where (select count(*) from guests where gage>a1.gage or (gage=a1.gage and id>=a1.id))
-> =(select count(*) from guests where gage<a2.gage or (gage=a2.gage and id<=a2.id))
-> and a1.gage>a2.gage
-> order by a1.gage desc;
+-------+------+-------+------+
| gname | gage | gname | gage |
+-------+------+-------+------+
| A100 | 100 | A10 | 10 |
| A90 | 90 | A20 | 20 |
| A80 | 80 | A30 | 30 |
| A70 | 70 | A40 | 40 |
| A60 | 60 | A50 | 50 |
+-------+------+-------+------+
5 rows in set (0.00 sec)
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 10
A90 90 A20 20
A80 80 A30 30
A70 70 A40 40
A60 60 A50 50SQL>