繁体   English   中英

两个表之间的SQL连接帮助

[英]SQL join help between two tables

我有两个表表a和表b。

表b包含表a的子集。 我想获得表a中不在表b中的所有id ID(id是一个公共列)尝试使用此SQL,但是它不能从表a中选择名称,其中name不在

select unique name
from table a inner join
     table b
     on a.id = b.id;  

感谢您的帮助

你需要在这里使用LEFT OUTER JOIN 这将检索TableA所有值,只检索那些与TableB匹配的值,然后在WHERE子句中,您可以测试TableB值是否为NULL,只返回没有匹配的TableA值:

 SELECT UNIQUE tableA.id FROM tableA LEFT OUTER JOIN tableB ON a.id = b.id WHERE b.id IS NULL;

一种方法是使用left outer join使用JNevills方式。

在oracle中你也可以使用exists

with TableA as (
  select 1 as "COL1" from dual
  union all select 2 from dual
  union all select 3 from dual
  union all select 4 from dual
  union all select 5 from dual
), TableB as (
  select 1 as "COL1" from dual
  union all select 2 from dual
  union all select 3 from dual
)
select * 
from TableA
where not exists(select * 
                 from TableB 
                 where TableA.COL1 = TableB.COL1)

只需“选择表b中不存在的id”

select a.id 
from tab_a 
where a.id not in (select b.id from tab_b)

看看SQL Minus操作符 - 有时实现为Except(如在SQLite中)。

select id from TableA minus select id from TableB;
select id from TableA except select id from TableB;

请试试这个对我有用

SELECT * FROM(SELECT a.id,a.name,COUNT(b.name)AS count FROM LEFT OUTER JOIN b ON a.name = b.name GROUP BY a.id,a.name)C WHERE C.count = 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM