• mybatis的使用技巧8——联合查询union和union all的区别和用法


    在实际项目开发中,会经常联合查询结构相似的多张数据表,使用union关键字就只需要一次sql操作,而无需执行多次查询并通过代码逻辑合并处理,减少了大量繁琐的操作,最重要的是还能通过可选的all关键字筛选重复的数据。

    1.union和union all区别

    • 相同点:两者都用于把来自多个select语句的结果组合到一个结果集合中。
    • 不同点:当使用union时,mysql会把结果集中重复的记录删掉,而使用union all ,mysql会把所有的记录返回,且效率高于union。

    最终的查询结果对比:

    2.union和union all用法

    重要的注意事项:

    • 第一个select语句中被使用的字段名称会被用于最终结果集的字段名称。
    • 存在union关键字的sql语句仅属于一条完整的sql,因此每一个select语句结束后都不能写标点符号。
    • 在多个 SELECT 语句中,对应的列应该具有相同的字段属性且同时字段的顺序要保持一致。
    • 如果子句中有order by,limit,需用括号()包起来。推荐放到所有子句之后,即对最终合并的结果来排序或筛选。

    具体的写法如下:

    1. -- union
    2. select id,logo_sn sn
    3. from card_info
    4. where del_flag = '0'
    5. and id in (57,72)
    6. union
    7. select helmet_id id,helmet_sn sn
    8. from use_log
    9. where del_flag = '0'
    10. and helmet_id in (57,72)
    11. -- union all
    12. select id,logo_sn sn
    13. from card_info
    14. where del_flag = '0'
    15. and id in (57,72)
    16. union all
    17. select helmet_id id,helmet_sn sn
    18. from use_log
    19. where del_flag = '0'
    20. and helmet_id in (57,72)

  • 相关阅读:
    Java Double longBitsToDouble()方法具有什么功能呢?
    RabbitMQ 安装和使用Demo
    艾美捷Cholesterol胆固醇功效和参数说明
    iOS——持久化
    【从零开始学习Redis | 第三篇】在Java中操作Redis
    vim常用命令
    WeetCode2滑动窗口系列
    leetcode - 二分查找
    抖音最新图文带货玩法实操分享!
    Mrtrix3---FACT--确定性纤维束追踪
  • 原文地址:https://blog.csdn.net/w10463672p/article/details/137969180