MySQL:在连接中选择不匹配的行

Aki*_*Aki 0 mysql join

表 1 包含一个具有数百万行的唯一 ID 列。

表 2 包含 2 列 matchId1、matchId2,它们可以保存表 1 中的 ID。表 2 中可以有许多行引用给定的 ID。

如何以有效的方式列出表 1 中未包含在表 2(在任一列中)中的 ID?

Str*_*rry 5

SELECT x.*
  FROM table1 x
  LEFT
  JOIN table2 y
    ON y.id = x.id
 WHERE y.id IS NULL;
Run Code Online (Sandbox Code Playgroud)

或者,更具体地说……

SELECT x.*
  FROM table1 x
  LEFT
  JOIN table2 y
    ON x.id IN(y.id1,y.id2)
 WHERE y.id IS NULL;
Run Code Online (Sandbox Code Playgroud)

这假设 table2 上有一个单列 PK