• MySQL语句复杂业务场景解决案例


    查询场景

    日期和时间的查询

    查询表1中创建时间小于或等于指定时间的数据

    and DATE_FORMAT(1.create_date, '%Y-%m-%d') <![CDATA[<=]]> DATE_FORMAT(#{入参.date}, '%Y-%m-%d')
    
    • 1

    解读

    DATE_FORMAT(参数,'精度'),用于 mybatis在处理sql的时候,按照年月日的格式去处理参数

    • ‘%Y-%m-%d %H:%i:%S’ 匹配到秒钟
    • ‘%Y-%m-%d %H:%i’ 匹配到分钟
    • ‘%Y-%m-%d %H’ 匹配到小时
    • ‘%Y-%m-%d’ 匹配到天
    • ‘%Y-%m’ 匹配到月
    • ‘%Y’ 匹配到年

    ,被CDATA[]]>这个标记所包含的内容将表示为纯文本,比如表示文本内容“<”。

    • 此标记用于xml文档中,我们先来看看使用转义符的情况。我们知道,在xml中,”<”、”>”、”&”等字符是不能直接存入的,否则xml语法检查时会报错,如果想在xml中使用这些符号,必须将其转义为实体,如”<”、”>”、”&”,这样才能保存进xml文档。

    自定义指定字段的内容排序

    通常排序都可以通过关键字 order by 搭配 desc 来实现,如

    SELECT ro.* FROM rebate_order ro
    	LEFT JOIN rebate_order_detail rod ON ro.id = rod.rebate_order_id
    WHERE rod.history_order_no like CONCAT('%', #{vo.historyOrderNo},'%')
    GROUP BY ro.id order by ro.create_time desc
    
    • 1
    • 2
    • 3
    • 4

    但是这里要讲的是特殊场景,比如订单的状态:草稿、已提交、已审核 在数据库中存的不是数值类型012,而是字符类型的(“草稿”, “已提交”, “已审核”),这时需要你根据订单状态来将查询结果进行排序
    用到关键字 filed ()

    SELECT ro.* FROM rebate_order 
    order by filed(order_status,'已审核','已提交','草稿')
    
    • 1
    • 2

    这样就能根据指定字段的内容进行排序

    插入场景

    修改场景

    一对多关系,

    将主表中字段A的数据 刷新到子表中 为空的字段b

    update 子表名 as1
        inner join (
        select2.id,2.字段A
        from 主表名 as2
        left join 子表名 as2 on2.id =2.主_id
        where (2.字段b is null or2.字段b = '')
        and2.字段A is not null
        )1
    on1.id =1.主_id
        set1.字段b =1.字段A;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    解读

    inner join :内关联,作用类似于and条件
    通过嵌套查询过滤出符合条件的主表ID和目标字段
    在修改子表字段b时,我们需要先通过子表中的主表ID找到对应的主表,
    为了预防主表中的字段A是null时将子表的字段b全刷成null,所以这里我们增加了一个判断 -》
    当且仅当主表字段A不为null,且子表字段b是空的时候,才将主表的数据刷新到子表

    删除场景

    持续更新…

  • 相关阅读:
    用于制作耳机壳的倒模专用UV树脂有什么特点?
    vue3中播放flv流视频,以及组件封装超全
    序列模型之循环神经网络(二)
    聊聊数据库建表的15个小技巧
    建立对象模型— 如何确定类与对象?
    13. 一文快速学懂常用工具——Kubernetes 命令
    第九章:最新版零基础学习 PYTHON 教程—Python 元组(第三节 -访问Python元组的前后元素)
    第九篇、线程同步(解决并发问题)
    IDEA 2023.3.6 下载、安装、激活与使用
    操作系统知识点学习
  • 原文地址:https://blog.csdn.net/kungFuApe/article/details/126580956