首页 > 数据库 > mysql教程 > 如何在 SQL 中有效地选择具有非零检查值的最大日期行?

如何在 SQL 中有效地选择具有非零检查值的最大日期行?

Susan Sarandon
发布: 2025-01-08 13:36:42
原创
202 人浏览过

How to Efficiently Select Max Date Rows with Non-Zero Check Values in SQL?

在 SQL 中提取非零检查金额的最大日期行

此示例演示如何从包含组、日期和货币值(现金和支票)的数据集中选择具有最新日期和非零支票值的唯一组。

使用此查询的初步尝试被证明是不够的:

<code class="language-sql">SELECT group, MAX(date), checks
FROM table
WHERE checks > 0
GROUP BY group
ORDER BY group DESC</code>
登录后复制

此查询返回每个组的所有日期和检查值,而不仅仅是具有最大日期的行中的数据。

解决方案分为两步:

首先,我们使用非零检查值确定每个组的最大日期:

<code class="language-sql">SELECT group, MAX(date) AS max_date
FROM table
WHERE checks > 0
GROUP BY group</code>
登录后复制

然后,我们将此结果集连接回原始表,以检索那些最大日期行的相应 checks (以及其他相关列):

<code class="language-sql">SELECT t.group, a.max_date, t.checks
FROM table t
INNER JOIN (
    SELECT group, MAX(date) AS max_date
    FROM table
    WHERE checks > 0
    GROUP BY group
) a ON a.group = t.group AND a.max_date = t.date;</code>
登录后复制

此内部联接确保最终输出中仅包含匹配最大日期和非零检查条件的行。

最佳实践:使用描述性和非保留字作为列名(例如,group_id而不是group)可以提高代码可读性并降低错误风险。

以上是如何在 SQL 中有效地选择具有非零检查值的最大日期行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板