MYSQL如何从其他不存在的表中选择值

时间:2016-10-04 03:48:00

标签: mysql

(如果这个问题的标题有误,请有人修理..)

我有三张这样的表

(Output table that I want)
+--------+-------+
|NAME    |CLASS  |
+--------+-------+
|Batman  |swim   |
+--------+-------+
|Superman|math   |
+--------+-------+
问题是:如何选择那个蝙蝠侠没有参加游泳课,超人没有参加数学课? 像这样:

file:///my-path

1 个答案:

答案 0 :(得分:2)

您需要先CROSS JOIN SUPERHEROCLASS表格才能获得SUPERHERO & CLASS的所有可能组合。

稍后在上面的交叉连接表tSCHOOL表之间进行左连接。

最后通过检查相应的WHERE条目SCHOOL来过滤NULL子句中的结果,确保这些组合(superheroclass)不会过去; t实际存在于SCHOOL

SELECT 
 t.NAME,
 t.CLASS
FROM 
(
  SELECT 
   SH.NAME,
   C.CLASS
  FROM SUPERHERO SH
  CROSS JOIN CLASS C 
) AS t 
LEFT JOIN SCHOOL S ON t.NAME = S.NAME AND t.CLASS = S.CLASS
WHERE S.NO IS NULL