table1
字段 A
值 a
b
c

table2
字段 A B
a a1
a a2
a a3
b a1
b a2
b a3
c a1
对两个表执行连接查询
查询条件1 B = "a1"

查询结果
A B
a a1
b a1
c a1

查询条件2 B = "a2"

查询结果
A B
a a2
b a2
c null

解决方案 »

  1.   

    select a.*,b.b from t1 a left join t2 b on a.a=b.a where b.b='a2'
      

  2.   

    select
      a.A,
      b.B
    from
      table1 a
    left join
      table2 b 
    on 
      a.a=b.a 
    and
     b.b='a1' -- 或者b.b='a2'
      

  3.   

    mysql> select * from table1;
    +---+
    | a |
    +---+
    | a |
    | b |
    | c |
    +---+
    3 rows in set (0.00 sec)mysql> select * from table2;
    +------+------+
    | a    | B    |
    +------+------+
    | a    | a1   |
    | a    | a2   |
    | a    | a3   |
    | b    | a1   |
    | b    | a2   |
    | b    | a3   |
    | c    | a1   |
    +------+------+
    7 rows in set (0.00 sec)mysql> select table1.a,t.b
        -> from table1 left join
        ->  (select * from table2 where b='a1') t on table1.a=t.a;
    +---+------+
    | a | b    |
    +---+------+
    | a | a1   |
    | b | a1   |
    | c | a1   |
    +---+------+
    3 rows in set (0.00 sec)mysql> select table1.a,t.b
        -> from table1 left join
        ->  (select * from table2 where b='a2') t on table1.a=t.a;
    +---+------+
    | a | b    |
    +---+------+
    | a | a2   |
    | b | a2   |
    | c | NULL |
    +---+------+
    3 rows in set (0.00 sec)mysql>
      

  4.   

    select a.*,b.b from t1A a left join (SELECT * FROM t2A WHERE b='a2') b on a.a=b.a