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

时间:2018-05-21 11:18:28

标签: mysql sql-server

有人可以帮我这个吗,

我有两张桌子

带有记录的表A

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

表B

A1 | x 
A2 | y 

我想检索TableB中没有任何相应值的记录。基本上,我想输出如下......

结果:

B | B1 

如何编写查询?

谢谢。

3 个答案:

答案 0 :(得分:0)

  1. 使用OUTER JOIN:
  2.     SELECT
          TableA.*
        FROM TableA
        LEFT OUTER JOIN TableB
          ON TableB.Field1 = TableA.Field2
        WHERE TableB.Field1 IS NULL
    
    1. 使用EXISTS:
    2. SELECT
        TableA.*
      FROM TableA
      WHERE NOT EXISTS
      (
        SELECT *
        FROM TableB
        WHERE TableB.Field1 = Table1A.Field2
      )
      

答案 1 :(得分:0)

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)) 

使用this链接进行演示

答案 2 :(得分:0)

表格和样本数据的定义:

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值,因为它们可能会引入意外(空)结果。

相关问题