左边两个表格之间的联系

时间:2014-01-23 05:49:37

标签: mysql join left-join

我有两个表X和Y.i在表X中有两个颜色,即A和B以及表Y中的颜色C. 现在我想使用左连接和ON条件连接X和Y. X.a = y.c或X.b = y.c。我希望在表Y中获得'c'coloumn的行,分别表X中的'a'coloumn和表Y中的'c'cOLOUMN,表X中的B'coloumn行。

结果应该是:

-----------------------
X.a    Y.C          X.B       Y.C
1       1            5         5
2       2            10        10
3       3            20        20 
NULL     NULL        NULL      NULL   

2 个答案:

答案 0 :(得分:0)

SELECT X.a, X.b, Y.c
FROM X LEFT JOIN Y
ON X.a = Y.c OR X.b = Y.c

你的问题在哪里?

问题是不知道sql语法?否则你可能没有正确构建你的问题陈述


根据您的评论,我假设您想知道哪个匹配项是检索的值,修改后的查询是:

SELECT X.a, X.b, Y.c, 
CASE WHEN (X.a = Y.c AND X.b != Y.c) THEN 'a' 
WHEN (X.a != Y.c AND X.b = Y.c) THEN 'b' 
WHEN (X.a = Y.c AND X.b = Y.c) THEN 'ab' END AS 'FromColumn'
FROM X LEFT JOIN Y
ON X.a = Y.c OR X.b = Y.c

答案 1 :(得分:0)

你可以简单地这样做

SELECT x.a, y1.c ac, x.b, y2.c bc
  FROM x 
    LEFT JOIN y y1 ON x.a = y1.c 
    LEFT JOIN y y2 ON x.b = y2.c

示例输出:

|      A |     AC |      B |     BC |
|--------|--------|--------|--------|
|      1 |      1 |      5 |      5 |
|      2 |      2 |     10 |     10 |
|      3 |      3 |     20 |     20 |
| (null) | (null) | (null) | (null) |

这是 SQLFiddle 演示