本帖最后由 bao86 于 2010-12-31 11:25:19 编辑

解决方案 »

  1.   

    select a.*,IFNULL(b.i,-1) ,IFNULL(c.i,-1)
    from a left join b on a.i=b.i
    left join c on a.i=b.i
      

  2.   


    用if方法可以实现:代码如下:
    SELECT DISTINCT a.i AS 'a.i',IF(b.i!=a.i,-1,b.i) AS 'b.i',IF(c.i!=a.i,-1,c.i) AS 'c.i' 
    FROM a,b,c 
    WHERE a.i=b.i AND a.i=c.i OR a.i=c.i AND a.i!=b.i OR a.i=b.i AND a.i!=c.i能否直接用查询条件而不是用if或ifnull进行筛选得到目标结果呢?
      

  3.   

    Select A.i,if(B.i<>'',B.i,-1) as "B.i",if(c.i<>'',c.i,-1) as "C.i"
    From A Left Join B on A.i=B.i
    Left JOin C on A.i=C.i
      

  4.   

    用LEFT JOIN 是比较保险的,你用的是内连接
      

  5.   

    mysql> select a.i,ifnull(b.i,-1) ,ifnull(c.i,-1)
        -> from a left join b on a.i=b.i
        ->  left join c on a.i=c.i;
    +------+----------------+----------------+
    | i    | ifnull(b.i,-1) | ifnull(c.i,-1) |
    +------+----------------+----------------+
    |    1 |              1 |             -1 |
    |    2 |              2 |             -1 |
    |    3 |              3 |             -1 |
    |    4 |             -1 |              4 |
    |    5 |             -1 |              5 |
    |    6 |             -1 |              6 |
    +------+----------------+----------------+
    6 rows in set (0.06 sec)mysql>