如果第一列等于特定值,是否可以在另一个列上联接表。

见下文:

表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/

10-11 01:21