一桌人在长桌上吃饭,分成两排,最年长的人和最年轻的人面对面,次年长的人和次年轻的人面对面,以此类推。
希望的输入是桌子左边    |     桌子右边
-----------------------
100岁的人   |     5岁的人
90岁的人    |    10岁的人
80岁的人    |    20岁的人
60岁的人    |    30岁的人
50岁的人    |    40岁的人   人的姓名和生日都可以,求这样的排序配对显示。
老师提醒可以用临时表和ROWNUM。
谢谢!!!!!!

解决方案 »

  1.   

    作业题啊
    如果是在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)
    
      

  2.   

    Oracle 的解法
    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>