比如说有一个表addr
里面有两个字段:street(varchar(255)),num(varchar(50))
addr里面的数据:
street                 num
街道1                  1-1  
街道2                  1-2  
街道1                  1-2
街道3                  1-1  
街道2                  1-3
街道3                  1-2
街道1                  1-3
街道3                  1-3
街道2                  1-1    我要用sql让它重新排序,变成:
street                 num
街道1                  1-1  
街道1                  1-2  
街道1                  1-3
街道2                  1-1  
街道2                  1-2
街道2                  1-3
街道3                  1-1
街道3                  1-2
街道3                  1-3这只是数据的样子,num可能还会更复杂.有没有怎么实现啊.

解决方案 »

  1.   

    简单,用order不就行了么
    select *
    from addr
    order by street , num;
      

  2.   

    select * from addr group by street order by num;
      

  3.   

    直接 order by street就可以了!mysql -uroot -p
    Enter password: ********
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 69 to server version: 4.0.17-nt-logType 'help;' or '\h' for help. Type '\c' to clear the buffer.mysql> CREATE TABLE `test`.`addr` (
        ->   `street` varchar(255) NOT NULL DEFAULT '0',
        ->   `num` varchar(50) NULL
        -> );
    Query OK, 0 rows affected (0.09 sec)mysql> INSERT INTO `test`.`addr` SET `street`='街道1', `num`='1-1';
    Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO `test`.`addr` SET `street`='街道2', `num`='1-2';
    Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO `test`.`addr` SET `street`='街道1', `num`='1-2';
    Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO `test`.`addr` SET `street`='街道3', `num`='1-1';
    Query OK, 1 row affected (0.02 sec)mysql> INSERT INTO `test`.`addr` SET `street`='街道2', `num`='1-3';
    Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO `test`.`addr` SET `street`='街道3', `num`='1-2';
    Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO `test`.`addr` SET `street`='街道1', `num`='1-3';
    Query OK, 1 row affected (0.00 sec)mysql> INSERT INTO `test`.`addr` SET `street`='街道3', `num`='1-3';
    Query OK, 1 row affected (0.02 sec)mysql> INSERT INTO `test`.`addr` SET `street`='街道2', `num`='1-1';
    Query OK, 1 row affected (0.00 sec)mysql>
    mysql> select * from test.addr order by street;
    +--------+------+
    | street | num  |
    +--------+------+
    | 街道1  | 1-1  |
    | 街道1  | 1-2  |
    | 街道1  | 1-3  |
    | 街道2  | 1-2  |
    | 街道2  | 1-3  |
    | 街道2  | 1-1  |
    | 街道3  | 1-1  |
    | 街道3  | 1-2  |
    | 街道3  | 1-3  |
    +--------+------+
    9 rows in set (0.00 sec)
      

  4.   

    先排序街道, 再排序门牌號, 用一個 sql 就可以了:
    select * from tbName order by 街道,门牌;