首页 > 解决方案 > 如何在同一个 select 语句中执行联合和左连接?

问题描述

前言:我是SQL新手,还不太了解,但我正在努力学习。

我想合并两张表(一张有旧数据,一张有新数据——每个都有相同的字段)。

然后,我要用“ID”左键加入。

下面的代码是我一直在尝试的,但没有成功。

SELECT TOP 10 *
FROM    clients
LEFT JOIN new_data
(
    SELECT * FROM old_data
    UNION 
    SELECT * FROM new_data
)
ON clients.cust_id = new_data.cust_id;

SQL 错误 [500150] [HY000]:Amazon 错误设置/关闭连接:未连接。

标签: sqlleft-joinunion

解决方案


您需要一个表别名:

SELECT TOP 10 *
FROM clients c LEFT JOIN 
     (SELECT * FROM old_data
      UNION ALL 
      SELECT * FROM new_data
     ) d
     ON c.cust_id = d.cust_id;

注意:我将其更改为UNIONUNION ALL因此不会产生删除重复项的开销。如果您确实想删除重复项,请保留UNION.


推荐阅读