sql查询以查找没有相应值的所有记录

ygya80vv  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(387)

有人能帮我吗,
我有两张table
有记录的表格

A | A1 
A | A2 
A | A3 
B | B1

表B

A1 | x 
A2 | y

我想检索表B中没有任何对应值的记录。基本上,我想输出如下。。。
结果:

B | B1

如何编写查询?
谢谢您。

7ajki6be

7ajki6be1#

SELECT * 
FROM   table_a 
WHERE col1 NOT IN (SELECT table_a.col1
               FROM   table_a
               JOIN 
               table_b 
               ON (table_b.col1 = table_a.col2))

使用此链接进行演示

uidvcgyl

uidvcgyl2#

表和样本数据的定义:

create table Tbl1 (col1 varchar(10), col2 varchar(10));
insert into Tbl1 values ('A','A1');
insert into Tbl1 values ('A','A2');

create table Tbl2 (col1 varchar(10), col2 varchar(10));
insert into Tbl2 values ('A1','y');

以及返回所需结果的查询(适用于ms-sql和mysql):

select * from Tbl1
where col2 not in (select col1 from Tbl2 where col1 is not null)

如果你被 where 子句,这只是为了避免 NULL 值,因为它们可能会引入意外的(空)结果。

xurqigkl

xurqigkl3#

使用外部联接:

SELECT
      TableA.*
    FROM TableA
    LEFT OUTER JOIN TableB
      ON TableB.Field1 = TableA.Field2
    WHERE TableB.Field1 IS NULL

使用存在:

SELECT
  TableA.*
FROM TableA
WHERE NOT EXISTS
(
  SELECT *
  FROM TableB
  WHERE TableB.Field1 = Table1A.Field2
)

相关问题