union和left join的联合使用

博客给出了百度百科关于SQL中UNION和LEFT JOIN的用法解释链接,还提供了查询5张表,包含4张联合查询和一个左连接的示例代码,欢迎大家对代码中的问题和错误进行评论指正。

下面这是百度百科关于union和left join的用法和解释:

union百度百科解释:https://baike.baidu.com/item/SQL%20UNION?fromModule=lemma_search-box
在这里插入图片描述

left join百度百科:https://baike.baidu.com/item/SQL%20LEFT%20JOIN?fromModule=lemma_search-box

在这里插入图片描述

这里直接上示例代码:

select
        a.TRADE_TYPE ,
        a.TXN_TMS    ,
        a.PAY_TYPE   ,
        a.PAY_CHANNEL,
        a.TXN_NUM   ,
        a.TXN_AMT    ,
        a.CUR_STATION,
        a.DEV_NODE_ID,
        b.STATION_NID  ,
        b.STATION_NAME_CN
        
        from
        ((
        select 
        table1.TRADE_TYPE ,
        table1.TXN_TMS    ,
        table1.PAY_TYPE  ,
        table1.PAY_CHANNEL,
        table1.TXN_NUM   ,
        table1.TXN_AMT   ,
        table1.CUR_STATION,
        table1.DEV_NODE_ID
        
        from table1)
        union all
      (  select
        table2.TRADE_TYPE ,
        table2.TXN_TMS  ,
        table2.PAY_TYPE  ,
        table2.PAY_CHANNEL ,
        table2.TXN_NUM  ,
        table2.TXN_AMT    ,
        table2.CUR_STATION ,
        table2.DEV_NODE_ID 
        from table2)
        union all
       ( select        
        table3.TRADE_TYPE ,
        table3.TXN_TMS  ,
        table3.PAY_TYPE  ,
        table3.PAY_CHANNEL  ,
        table3.TXN_NUM   ,
        table3.TXN_AMT  ,
        table3.CUR_STATION  ,
        table3.DEV_NODE_ID
        
        from table3)
        union all
        (select 
        table4.TRADE_TYPE ,
        table4.TXN_TMS    ,
        table4.PAY_TYPE  ,
        table4.PAY_CHANNEL  ,
        table4.TXN_NUM    ,
        table4.TXN_AMT  ,
        table4.CUR_STATION   ,
        table4.DEV_NODE_ID 
        
        from table4))
        as a  left join   table5 as  b 
        on
        b.STATION_NID = a.CUR_STATION

这里是查询了5张表,4张联合查询加一个左连接,用法在代码里应该能清晰了解了,有问题或者有什么错误,欢迎大家评论指正!!!

### `UNION` `LEFT JOIN` 的区别及使用方法 在 SQL 中,`UNION` `LEFT JOIN` 是两种不同的操作,它们分别用于处理结果集的合并表之间的连接。理解它们的区别有助于根据实际需求选择合适的方法。 #### `UNION` `UNION` 操作符用于合并两个或多个 `SELECT` 语句的结果集,并自动去除重复行[^1]。这意味着如果两个查询结果中存在相同的记录,它只会保留一条。需要注意的是,每个 `SELECT` 语句中的列数必须相同,数据类型也应匹配,并且列的顺序需要一致。 例如: ```sql SELECT name FROM TableA UNION SELECT name FROM TableB; ``` 此查询将返回 `TableA` `TableB` 中所有不重复的 `name` 值。 与之相对的是 `UNION ALL`,它不会去除重复值,因此在性能上通常优于 `UNION`,尤其是在不需要去重的情况下[^2]。 #### `LEFT JOIN` `LEFT JOIN`(或称为左外连接)则是一种连接操作,用于从两个表中提取数据。它以左表为基础,即使右表中没有匹配的行,左表的所有记录都会出现在结果集中。对于右表中没有匹配的部分,结果集中对应的字段将显示为 `NULL`。 例如: ```sql SELECT * FROM category c LEFT JOIN news n ON c.id = n.id; ``` 该查询会返回 `category` 表中的所有记录,以及与之匹配的 `news` 表中的记录;如果没有找到匹配项,则 `news` 表的相关字段为 `NULL`。 #### 区别总结 - **用途不同**:`UNION` 主要用于合并多个查询结果集,而 `LEFT JOIN` 用于关联两个表的数据。 - **处理重复的方式不同**:`UNION` 自动去除重复记录,而 `LEFT JOIN` 可能会产生多条记录,包括重复的情况。 - **结果集结构不同**:`UNION` 要求所有查询具有相同的列数、相似的数据类型一致的列顺序;相比之下,`LEFT JOIN` 的结果集包含来自两个表的所有列,其结构取决于连接条件。 通过合理运用这些操作符,可以更灵活地处理数据库中的数据,满足各种复杂的查询需求。例如,在需要获取所有分类信息及其可能存在的新闻详情时,使用 `LEFT JOIN` 是合适的;而在希望整合多个来源的数据而不考虑重复时,则更适合采用 `UNION` 或 `UNION ALL`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值