码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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 子表名 as 子1
        inner join (
        select 主2.id, 主2.字段A
        from 主表名 as 主2
        left join 子表名 as 子2 on 主2.id = 子2.主_id
        where (子2.字段b is null or 子2.字段b = '')
        and 主2.字段A is not null
        ) 主1
    on 主1.id = 子1.主_id
        set 子1.字段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是空的时候,才将主表的数据刷新到子表

    删除场景

    持续更新…

  • 相关阅读:
    SSL/TLS工作原理:密钥、证书、SSL握手
    PCB制造中铜厚度的重要性
    酶联试剂抗体抗原 ——博迈伦
    2024年湖北中级工程师职称申报需要准备什么资料呢?
    烧了 300 张 H100,新版开源 LLM 排行榜发布:中国模型 Qwen-72B 仍是第一!
    react多组件出错其他正常显示
    通过Vue-cli搭建spa项目
    【Java每日一题】——第二十八题:编程定义一个学生类汽车类Car(2023.10.12)
    集合—Collections工具类
    199、在RabbitMQ管理控制台中管理 Exchange(充当消息交换机的组件) 和 Queue(消息队列),以及对默认Exchange的讲解
  • 原文地址:https://blog.csdn.net/kungFuApe/article/details/126580956
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号