小墨の博客

梦想需要付诸行动,否则只能是梦

MySQL查询表中指定条件下的最新记录

场景:一个运单,如果可以多次入库,就会有多条入库记录的日志

需求:现在需要获取最新的那一条入库记录的日志


1、WHERE + 子查询

这样的话,这些条件就直接放在子查询中就可以,然后精确的返回指定的最新id,在外层令用id过滤出一条数据

如果是id自增,就用MAX(id),如果不是id自增,那么就需要用MAX(create_time)之类的字段来取出一条最新的记录

SELECT *
FROM tms_waybill_log log
WHERE log.id = (SELECT MAX(id) FROM tms_waybill_log WHERE dr = 0 AND waybill_id = 125 AND waybill_status = 1010)


2、使用ORDER BY

使用ORDER BY将其倒序排序,然后取出第一条,就是最新的

使用ORDER BY时,会先执行WHERE,过滤出一些数据,然后再对这些数据进行排序,如果过滤出的数据比较多,那么效率就比较低,如果过滤出的数据比较少,那么几乎没什么影响,效率很快

SELECT *
FROM tms_waybill_log log
WHERE log.dr = 0 
    AND log.waybill_id = 125
    AND log.waybill_status = 1010
ORDER BY log.id DESC
LIMIT 1


————————————————

参考:https://blog.csdn.net/weixin_42193813/article/details/121861160

张小弟之家

本文链接:
文章标题:

本站文章除注明转载/出处外,均为原创,若要转载请务必注明出处。转载后请将转载链接通过邮件告知我站,谢谢合作。本站邮箱:admin@only4.work

尊重他人劳动成果,共创和谐网络环境。点击版权声明查看本站相关条款。

    发表评论:

    搜索
    本文二维码
    标签列表
    站点信息
    • 文章总数:518
    • 页面总数:20
    • 分类总数:92
    • 标签总数:209
    • 评论总数:63
    • 浏览总数:244305

    | | |
    | |  Z-Blog PHP