如何 select 一个 table 的记录与另外两个 table 不匹配

How to select the records from one table which is not matching with the other two tables

我有一个 master table emp1 table 有 3 列和 3 行,如下所示

empid empname empsal
1     a       100
2     b       300
3     c       500

second table emp2 with 3 columns and 1 row

empid empname empsal
1     a       100

假设,如果我必须选择仅在第一个 table 中可用但在第二个 table 中不可用的记录,那么我可以使用以下查询

select * FROM emp1 b 
  LEFT JOIN emp2 f ON f.empid = b.empid 
      WHERE f.id IS NULL

但这里我有第三个 table emp3,有 3 列和 1 行

empid empname empsal
2     b       300

如果我必须选择仅在第一个 table 中可用的记录,而不在第二个和第三个 table 中可用的记录,最好的解决方案是什么?

有很多方法可以做到,这里是使用 NOT IN:

的一种
CREATE TABLE Emp1 (
    empid INT, 
    empname VARCHAR(25),
    empsal INT
    );

CREATE TABLE Emp2 (
    empid INT, 
    empname VARCHAR(25),
    empsal INT
    );

CREATE TABLE Emp3 (
    empid INT, 
    empname VARCHAR(25),
    empsal INT
    );

INSERT INTO Emp1 VALUES
(1,     'a',       100),
(2,     'b',       300),
(3,     'c',       500);

INSERT INTO Emp2 VALUES
(1,     'a',       100);

INSERT INTO Emp3 VALUES
(2,     'b',       300);

SELECT *
FROM Emp1
WHERE empid NOT IN ( SELECT empid FROM Emp2 UNION SELECT empid FROM Emp3);

结果:

+-------+---------+--------+
| empid | empname | empsal |
+-------+---------+--------+
|     3 | c       |    500 |
+-------+---------+--------+

Demo