You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL如何查询指定日期总金额最高的单条完整账单行数据

解决方案

你只需要在原有查询语句末尾加上LIMIT 1即可实现仅返回一条符合条件的记录,修改后的语句如下:

SELECT * FROM biling 
WHERE total=(SELECT MAX(total) FROM biling WHERE date='2021-10-26')
LIMIT 1;

可选优化

如果你对返回的记录有明确偏好(比如取同金额下订单号最小/最大的、最早生成的),可以搭配ORDER BY子句指定排序规则,避免返回结果随机:

-- 示例:取同最高金额下订单号最小的记录
SELECT * FROM biling 
WHERE total=(SELECT MAX(total) FROM biling WHERE date='2021-10-26')
ORDER BY 订单号 ASC 
LIMIT 1;

如果你使用的是MySQL 8.0及以上版本,也可以用窗口函数实现,逻辑更清晰,后续如果需要调整规则也更灵活:

WITH daily_bill_rank AS (
    SELECT *,
        RANK() OVER(ORDER BY total DESC) AS total_rank
    FROM biling
    WHERE date = '2021-10-26'
)
SELECT * FROM daily_bill_rank WHERE total_rank = 1 LIMIT 1;

注意事项

  • 未加ORDER BY直接使用LIMIT 1时,MySQL会返回匹配条件中最先扫描到的记录,返回结果不固定,有明确取数规则建议指定排序条件。
  • 注意校验表名拼写:你原有语句中的表名是biling,如果实际表名是billings请自行修正。

内容的提问来源于stack exchange,提问作者Hazem El-behairy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:45:04