当前位置: 首页 > news >正文

MySQL 常用业务 SQL

这篇更贴近“日常写业务”的 SQL,不讲理论,强调能直接拿去改。

一、按时间范围的常用查询

-- 最近 7 天订单SELECT*FROMordersWHEREcreate_time>=NOW()-INTERVAL7DAY;-- 指定日期SELECT*FROMordersWHEREcreate_time>='2026-04-01 00:00:00'ANDcreate_time<'2026-04-02 00:00:00';

二、状态机更新(防止重复更新)

-- 只允许从 UNPAID -> PAIDUPDATEordersSETstatus='PAID',pay_time=NOW()WHEREid=?ANDstatus='UNPAID';

三、库存扣减(防止超卖)

UPDATEstockSETquantity=quantity-1WHEREsku_id=?ANDquantity>0;

配套判断:受影响行数为 0 就表示库存不足。


四、批量更新(避免一条条改)

UPDATEuserSETstatus='DISABLED'WHERElast_login<NOW()-INTERVAL180DAY;

五、存在即更新(UPSERT)

INSERTINTOuser_profile(user_id,nickname,avatar)VALUES(?,?,?)ONDUPLICATEKEYUPDATEnickname=VALUES(nickname),avatar=VALUES(avatar);

六、批量插入(提高吞吐)

INSERTINTOaudit_log(user_id,action,create_time)VALUES(101,'LOGIN',NOW()),(102,'LOGIN',NOW()),(103,'LOGIN',NOW());

七、分页查询(业务常规)

-- 传统分页(页数不大可用)SELECTid,user_id,status,create_timeFROMordersORDERBYcreate_timeDESCLIMIT0,20;
-- 游标分页(更稳)SELECTid,user_id,status,create_timeFROMordersWHERE(create_time<?OR(create_time=?ANDid<?))ORDERBYcreate_timeDESC,idDESCLIMIT20;

八、模糊搜索(建议加前缀)

-- 前缀匹配可用索引SELECT*FROMuserWHEREnicknameLIKE'张%';

%张%这种全模糊通常走不到索引。


九、查重(业务常用)

SELECTemail,COUNT(*)AScntFROMuserGROUPBYemailHAVINGcnt>1;

十、取某用户最新一条记录

SELECT*FROMlogin_logWHEREuser_id=?ORDERBYcreate_timeDESCLIMIT1;

十一、报表类统计(按天聚合)

SELECTDATE(create_time)ASday,COUNT(*)AScntFROMordersWHEREcreate_time>=NOW()-INTERVAL30DAYGROUPBYdayORDERBYday;

十二、快速排除无效数据

SELECT*FROMordersWHEREstatusIN('PAID','SHIPPED')ANDdeleted=0;

最后总结

这类业务 SQL 的核心是三点:

  1. 写法清晰、能命中索引
  2. 更新条件有约束,避免重复或越界
  3. 批量操作优先,减少往返成本
http://www.jsqmd.com/news/593271/

相关文章:

  • 用Python模拟随机游走:从一维到三维,直观理解马尔可夫链的常返性
  • 构建现代化电商平台:SpringBoot后端与Vue前端的全栈实践指南
  • Sub-Agent 与 Agent Team 的本质区别
  • 5分钟搞定抖音音频提取:免费高效的douyin-downloader终极指南
  • AI for Science:化学生物学革命,从药物设计到蛋白质工程的全面解析
  • 电动汽车电动真空助力制动系统模型:一场制动系统的静默革命
  • 终极音乐解析方案:music-api如何免费打通四大平台音频资源壁垒
  • Maven项目引入本地JAR包的三种正确方式对比
  • YimMenu终极指南:GTA5安全增强与功能定制完全教程
  • claw-code 源码详细分析:`reference_data` JSON 快照——大型移植里「对照底稿」该怎么治理与演进?
  • PowerToys Image Resizer:三步解决全场景图片批量处理难题
  • 如何快速配置MangoHud快捷键:从零开始的游戏性能监控终极指南
  • AtCoder Beginner Contest 452(ABC452)
  • AI for Science新浪潮:化学合成规划,从算法原理到产业落地全解析
  • S7-1200 PLC 高级语言SCL数控G代码功能块源文件解析及程序思路
  • 新手友好:通过快马生成的代码项目理解智能车感知与控制基础
  • 基于碳排放交易与需求响应的综合优化调度策略:微网虚拟电厂日前调度模型研究
  • 从Kaggle到落地:Albumentations在医学影像分割和目标检测中的实战配置指南
  • 手把手教你用王思鱼指纹浏览器(Windows版)绕过主流检测站点
  • Hugging Face 快速入门手册(基础应用)
  • Boss-Key老板键:一键隐藏窗口的终极隐私保护神器
  • 云服务器环境配置怎么操作?云服务器环境搭建详细教程
  • 终极图像矢量化解决方案:告别像素模糊,拥抱无限缩放
  • 深入解析STM32F103的USB Mass Storage实现:SCSI命令实战指南
  • ZYNQ PS端AXI-Stream FIFO驱动实战:从Xilinx官方例程到自定义数据流发送
  • 掌握YimMenu:解锁5大核心能力的GTA5增强工具实战指南
  • Hugging Face 快速入门手册(实操案例-心电心音同步分析)
  • 从继电器到模拟开关:用CircuitJS带你搞懂‘开关控制开关’的进化史
  • 深入理解 Firebase onSnapshot 的监听机制
  • 终极浏览器自由方案:如何让Windows真正尊重你的默认浏览器选择