使用 Join 和 Union 组合来自 2 个表的结果 [关闭]

Posted

技术标签:

【中文标题】使用 Join 和 Union 组合来自 2 个表的结果 [关闭]【英文标题】:Using Join and Union to combine results from 2 tables [closed] 【发布时间】:2022-01-20 04:10:47 【问题描述】:

我已经有一个使用来自多个主表的连接的结果集,其中 TABLE A 作为主表。现在我正在尝试在表 B 上执行联合,并保留来自主节点的连接。

这是我尝试过的查询:

select 
    t1.* 
from 
    (select 
         id, mobile, email, pan 
     from a  
     union
     select  
         b_id, mobile, email, pan
     from b) as t1,
    ci.status,
    ab.desc
from 
    a 
left join 
    cuI ci on ci.id = a.id
left join 
    abMaster ab on ab.id = a.id
where 
    a.id is not null 
order by 
    a.created_on desc

这没用

【问题讨论】:

这不起作用不是对您的问题的非常准确的描述。 发生了什么?没有?选择了错误的数据?没有数据被选中?您是否收到错误 - 如果是:什么是那个错误? 我收到语法错误 在您的查询中有几个错误并且不清楚您的目标.. 然后更新您的问题添加适当的数据样本和预期结果 请了解 UNION 和 UNION ALL 之间非常显着的区别。一般来说,您应该默认使用 UNION ALL 以避免重复删除的成本(尤其是在不需要时)。 【参考方案1】:

乍一看你有几个错误

某些列名ci.status, ab.descin 位置错误,

两个来自类

表 a 中的引用应该(可能)是对 t1 的引用

一个可能的有效查询可能是

select  t1.* , ci.status, ab.desc
from 
    (select id, mobile, email, pan 
     from a  
     union
     select b_id, mobile, email, pan
     from b
) as t1 
left join 
    cuI ci on ci.id = t1.id
left join 
    abMaster ab on ab.id = t1.id
where 
    t1.id is not null 
order by 
    t1.created_on desc

【讨论】:

以上是关于使用 Join 和 Union 组合来自 2 个表的结果 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

sql中用union all最多可以合并几个表

SQL INNER JOIN 问题

一个奇怪的 Oracle SQL,它来自 3 个表,但在 where 子句中只留下了 join 2?

MYSQL:用union查询2个表很慢,如何改进?

union 和 join 和有啥不一样?

union 和 join 和有啥不一样?