关于MySQL中“左连接”的问题

时间:2013-10-17 03:22:24

标签: mysql sql left-join

我有两张桌子:

表A:表B:

id m1             id  m2
------            -------
1  a              1   a
2  b              2   c
3                 3   d

当我执行sql:

select A.*,B.id as mid from A left join B on A.m1 = b.m2

我想得到结果:

id   m1   mid
--------------
1    a   1
2    b   
3            

但我明白了:

  id   m1   mid
    --------------
    1    a   1
    2    b     

有谁知道如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

我在这个fiddle中得到了正确的结果。

| ID |     M1 |    MID |
|----|--------|--------|
|  1 |      a |      1 |
|  2 |      b | (null) |
|  3 | (null) | (null) |

它也适用于空字符串。您提到的最终行为违反了左连接。

答案 1 :(得分:0)

NULL比较结果为unknown,因此您可能希望将NULL替换为JOIN条件中的某些内容。

答案 2 :(得分:0)

我已经更新了Mosty Mostacho的小提琴(我不够高,以回复答案)所以这是使用空字符串而不是NULL http://sqlfiddle.com/#!2/48d78/5

| ID |     M1 |    MID |
|----|--------|--------|
|  1 |      a |      1 |
|  2 |      b |        |
|  3 |        |        |