如果第一列等于特定值,是否可以在另一个列上联接表。
见下文:
表A
.----+-----------------.
| ID | Name |
+----+-----------------+
| 1 | Name goes here1 |
| 2 | Name goes here2 |
| 3 | Name goes here3 |
| 4 | Name goes here4 |
.----+-----------------+
表B
.----+-----------------+-----------------.
| 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除非tableB.id1 = x然后加入ON tableB.id2
最佳答案
您可以在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)
关于mysql - MySQL-在A列上联接表,除非A = x,然后在b列上联接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43116798/