MySQL:从表A中选择,表B中不存在

Pat*_* H. 0 mysql

我正在尝试为MySQL编写一个SELECT语句,它从表A中选择表B中不存在的内容.大多数示例只使用一个字段作为键.在我的情况下,我有3个字段.

TableA => a.fieldA, a.fieldB, a.fieldC
1,1,1
1,2,1
1,3,1
1,4,1
1,5,1

TableB => b.fieldA, b.fieldB, b.fieldC
1,1,1
1,3,1
1,4,1
Run Code Online (Sandbox Code Playgroud)

所以我只想要TableA中不存在TableB中的字段

Result
1,2,1
1,5,1
Run Code Online (Sandbox Code Playgroud)

我试过LEFT JOIN,但没有运气

SELECT a.fieldA, a.fieldB, a.fieldC
FROM TableA a 

LEFT JOIN TableB b ON (
a.fieldA = b.fieldA 
AND a.fieldB = b.fieldB 
AND a.fieldC = b.fieldC) 

WHERE a.fieldA = 1 
AND a.fieldC = 1
Run Code Online (Sandbox Code Playgroud)

我也试过NOT IN,但不知道如何用3个字段做到这一点.

我知道这一定很简单,但我是盲目的.糟糕的一天 :(

Ano*_*arZ 6

使用NOT IN:

SELECT a.fieldA, a.fieldB, a.fieldC
FROM tableA a 
WHERE (a.fieldA, a.fieldB, a.fieldC) NOT IN (
SELECT b.fieldA, b.fieldB, b.fieldC
FROM  tableB b)
Run Code Online (Sandbox Code Playgroud)

使用LEFT JOIN:

SELECT a.fieldA, a.fieldB, a.fieldC
FROM tableA a 

LEFT JOIN tableB b ON (
a.fieldA = b.fieldA 
AND a.fieldB = b.fieldB 
AND a.fieldC = b.fieldC) 

WHERE b.fieldA IS NULL
Run Code Online (Sandbox Code Playgroud)

编辑

我只是使用NOT EXISTS以类似的方式找出另一种方式

SELECT a.fieldA, a.fieldB, a.fieldC
FROM tableA a 
WHERE NOT EXISTS (
SELECT 1
FROM  tableB b 
WHERE a.fieldA = b.fieldA 
AND a.fieldB = b.fieldB 
AND a.fieldC = b.fieldC
);
Run Code Online (Sandbox Code Playgroud)