如何在同一个select语句中执行联合和左联接?

时间:2019-06-20 19:08:56

标签: sql left-join union

前言:我是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错误设置/关闭连接:未连接。

1 个答案:

答案 0 :(得分:1)

您需要一个表别名:

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;

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