某表  
ID------Name
1--------A1
1--------B1
1--------C1
2--------A2
3--------A3
3--------B3查询结果要求是ID---------upName---------downName
1-----------A1---------------NULL
1-----------B1---------------A1
1-----------C1---------------B1
2-----------A2---------------NULL
3-----------A3---------------NULL
3-----------B3---------------A3
麻烦了~~

解决方案 »

  1.   

    +------+------+
    | id   | name |
    +------+------+
    |    1 | A1   |
    |    1 | B1   |
    |    1 | C1   |
    |    2 | A2   |
    |    3 | A3   |
    |    3 | B3   |
    +------+------+
    6 rows in set (0.00 sec)mysql> select a.id,a.name,max(b.name)
        -> from tx a left join tx b on a.id=b.id and a.name>b.name
        -> group by a.id,a.name;
    +------+------+-------------+
    | id   | name | max(b.name) |
    +------+------+-------------+
    |    1 | A1   | NULL        |
    |    1 | B1   | A1          |
    |    1 | C1   | B1          |
    |    2 | A2   | NULL        |
    |    3 | A3   | NULL        |
    |    3 | B3   | A3          |
    +------+------+-------------+
    6 rows in set (0.05 sec)mysql>
      

  2.   

    建议你增加自增字段ID1,通过对ID1的判断来实现
    SELECT * from ttg6 a
    left join ttg6 b 
    on a.id=b.id and a.id1>b.id1
      

  3.   

    实际中 这个表的这个ID 是来自另一个表的 假设表B这个表B可以拥有多种这个表A的name值这个表A其实还有个ID字段 是他这个表A自身的ID其实1楼的SQL 我有个“担忧”:a.name>b.name这name值做比较的话.........是根据阿克斯吗?如果是这样是不是太不可靠了?
      

  4.   

    这个表A其实还有个ID字段 是他这个表A自身的ID 老兄你要早说啊,否则大家很难猜到的。如果你有这个ID的话,并且正好能够符合你的顺序的话,就用这个ID就可以了。以你一楼的数据做结果,只能以 name来排序了。