首页 > 解决方案 > 无重复联合或连接查询

问题描述

我尝试编写一个查询来选择两个表中的对象。第一个是 id 列表,第二个是这个 id 和一个具有特定值的字段。我想显示我所有的 id 和特定值,即使它在第一个表中是空的。当然我不想要重复的结果。

我试过加入、联合、选择不足,但我的 id 字段总是重复。默认情况下,在 SQLUNION中是不同的,因此它可以解决问题,但我不知道如何合并这两个查询而不会在 id 上重复。

我制作了一个更直观的图表:图表

一些代码,在 id 上有重复:

SELECT a.id, 'null' AS value
FROM tableA a
UNION
SELECT b.id, b.value
FROM tableB b;

使用条件编辑:

SELECT a.id, 'null' AS value
FROM tableA a
UNION
SELECT b.id, b.value
FROM tableB b
WHERE b.idtype = 1;

标签: sqlpostgresql

解决方案


我认为您正在寻找left join

select 
    ta.id,
    tb.value, 
    case when tb.id is null then 'Table A' else 'Table B' end source
from tablea ta
left join tableb tb on ta.id = tb.id

推荐阅读