如何将表连接到联合查询的结果

Posted

技术标签:

【中文标题】如何将表连接到联合查询的结果【英文标题】:How to join a table to the result from a union query 【发布时间】:2020-06-05 09:17:10 【问题描述】:

我正在使用 union select 从 2 个表中选择数据:

select Product_Code from Discount_Table union select Product_Code from Discount2_Table 

Union Query returns this

所以在我选择数据后,我想使用这些数据与其他表连接,例如 Product_Table,但我遇到了错误。

这是我的查询

select Product_Name, Price
from Discount_Table
union
select Product_Code
from Discount2_Table
join Product_Table on Discount_Table.Product_Code = Product_Table.Product_Code

任何提示/帮助将不胜感激!

【问题讨论】:

【参考方案1】:

你可以像这样使用子查询:

SELECT * FROM 

(select Product_Name,Price from Discount_Table union select Product_Code from Discount2_Table) Discount_Table

JOIN Product_Table ON Discount_Table.Product_Code = Product_Table.Product_Code

【讨论】:

【参考方案2】:

您可以通过几种不同的方式稍后在查询中引用结果表,但这里有几种: 您可以将第一个查询的结果放入 CTE (Common Table Expression),然后在代码中进一步加入:

WITH product_codes (Product_code) AS
    (
        select Product_Code 
        from Discount_Table 

        union

        select Product_Code 
        from Discount2_Table 
    )
    select t.Product_Name, t.Price  
    from product_codes pc
    join Product_Table t on pc.Product_Code = t.Product_Code

你也可以使用temporary tables:

select Product_Code 
INTO #product_codes
from Discount_Table 

union

select Product_Code 
from Discount2_Table 

select t.Product_Name, t.Price  
from #product_codes pc
join Product_Table t on pc.Product_Code = t.Product_Code

通过将您的第一个查询的结果存储到一个临时表中,您可以稍后在查询中访问该临时表,其工作原理类似。您选择一个版本而不是另一个版本的原因有很多,但它们都足以让您获得结果。 我找到了一个很好的答案,更多地解释了这些差异here。

【讨论】:

以上是关于如何将表连接到联合查询的结果的主要内容,如果未能解决你的问题,请参考以下文章

错误:ORA-00905:将表连接到选择查询时缺少关键字

如何在 SQL 中将表连接到子查询结果?

MySQL联合查询

16.多表联合查询

如何在联合查询的另一个选择中使用选择的结果?

SQL多表多字段联合查询怎么弄?最终结果用HTML页面以表格形式显示(表格已有,类似excel)。