如果第一列等于特定值,是否可以在不同列上连接表。
见下文:
表A
.----+-----------------.
| ID | Name |
+----+-----------------+
| 1 | Name goes here1 |
| 2 | Name goes here2 |
| 3 | Name goes here3 |
| 4 | Name goes here4 |
.----+-----------------+
tableB的
.----+-----------------+-----------------.
| ID | id1 | id2 |
+----+-----------------+-----------------+
| 1 | ID goes here | ID goes here |
| 2 | ID goes here | ID goes here |
| 3 | ID goes here | ID goes here |
| 4 | ID goes here | ID goes here |
.----+-----------------+-----------------.
所以例如,我想加入tableA ON tableA.ID = tableB.id1 UNLESS tableB.id1 = x THEN JOIN ON tableB.id2
答案 0 :(得分:1)
您可以将此表达为on
子句中的基本逻辑:
on (a.id = b.id1 and b.id1 <> x) or
(a.id = b.id2 and b.id1 = x)
如果x
可以NULL
,逻辑会稍微复杂一些,但你绝对可以使用相同的想法。如果想要测试NULL
,那么表达查询的更简单方法是:
on a.id = coalesce(b.id1, b.id2)