【问题标题】:Joining tables selecting values that exist only in one table连接表选择仅存在于一个表中的值
【发布时间】:2021-08-16 15:03:13
【问题描述】:

我有两张桌子

A
ID age  
1   24
2   25
45  22

B 
Name school Surname
34  school1  141
1   school2  152

我只想为那些不在 A 中的名称从 B 中选择姓氏。ID 和名称在两个表中具有相同的含义,但名称不同。 我写了

Select distinct bb.Surname
From B as bb 
Left outer join A as aa 
On bb.Name=aa.ID

但行数与两个表之间的内连接相同。 我有大约 100000 行,所以我无法手动检查。 您发现我的方法中的失败了吗?

提供的答案并没有解决问题,因为我得到的值与内部连接相同,所以显然有问题。

【问题讨论】:

    标签: sql teradata-sql-assistant


    【解决方案1】:
       select b.surname
       from tableb as b
       left join tablea as a on b.name=a.id
       where a.id is null
    

    【讨论】:

    • 请问您为什么要添加条件isnull?添加这个条件我没有行
    • 另外,这很奇怪,因为如果我使用左外连接或左连接,我得到的值与内连接完全相同。我觉得有问题……
    • 基于您的示例 WITH A (ID,AGE)AS (SELECT 1,24 UNION ALL SELECT 2,25 UNION ALL SELECT 45,22), B (NAME,school,Surname)AS (SELECT 34,'school1',141 UNION ALL SELECT 1,'school2',152 ) 从 B 中选择 BB.SURNAME 作为 BB LEFT JOIN A AS AA ON BB.NAME=AA.ID WHERE AA.ID IS NULL
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多