本帖最后由 mbcls 于 2011-05-18 20:17:33 编辑

解决方案 »

  1.   


       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  2.   

    create table table1

    id int(10), 
    col1 varchar(20),
    col2 varchar(20),
    col3 varchar(20) 
     
    ) insert into table1 select 1,'user1','v1','value1' 
    insert into table1 select 2,'user1','v2','value2' 
    insert into table1 select 3,'user2','v1','value3' 
    insert into table1 select 4,'user2','v2','value4' 
    insert into table1 select 5,'user3','v1','value5' 
    ....../*
    要得到这样的结果:
    col1   col2   col3
    -----------------------
    user1  v1     value1 
    user1  v2     value2 
    user2  v1     value3 
    user2  v2     value4 
    user3  v1     value5 
    user3  v2     null
    ......
    */
    drop table table1
      

  3.   

    mysql> select * from table1;
    +------+-------+------+--------+
    | id   | col1  | col2 | col3   |
    +------+-------+------+--------+
    |    1 | user1 | v1   | value1 |
    |    2 | user1 | v2   | value2 |
    |    3 | user2 | v1   | value3 |
    |    4 | user2 | v2   | value4 |
    |    5 | user3 | v1   | value5 |
    +------+-------+------+--------+
    5 rows in set (0.03 sec)mysql> select a.col1,b.col2,c.col3
        -> from ((select distinct col1 from table1) a ,
        ->  (select distinct col2 from table1) b
        -> ) left join table1 c on a.col1=c.col1 and b.col2=c.col2;
    +-------+------+--------+
    | col1  | col2 | col3   |
    +-------+------+--------+
    | user1 | v1   | value1 |
    | user1 | v2   | value2 |
    | user2 | v1   | value3 |
    | user2 | v2   | value4 |
    | user3 | v1   | value5 |
    | user3 | v2   | NULL   |
    +-------+------+--------+
    6 rows in set (0.03 sec)mysql>
      

  4.   

    SELECT B.COL1,A.COL2,C.COL3 FROM (
    (SELECT DISTINCT col2 FROM table1) a 
    ,
    (SELECT DISTINCT col1 FROM table1) B)
    LEFT JOIN TABLE1 C ON A.COL2=C.col2 AND B.COL1=C.col1;