首页 >数据库 >mysql教程 >如何在 SQL 中选择具有非零支票金额的最大日期行?

如何在 SQL 中选择具有非零支票金额的最大日期行?

Barbara Streisand
Barbara Streisand原创
2025-01-08 13:18:441007浏览

How to Select Maximum Date Rows with Non-Zero Check Amounts in SQL?

从 SQL 表中提取具有非零检查值的最新条目

本指南演示了如何有效检索每个组的最新记录,过滤非零支票金额。 让我们假设一个表的结构如下:

<code>group    date      cash  checks
  1    1/1/2013     0      0
  2    1/1/2013     0      800
  1    1/3/2013     0      700
  3    1/1/2013     0      600
  1    1/2/2013     0      400
  3    1/5/2013     0      200</code>

以下 SQL 方法可以实现此目的:

首先,我们找到 checks 值大于零的每个组的最大日期:

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

这会产生:

<code>group    max_date
  2    1/1/2013
  1    1/3/2013
  3    1/5/2013</code>

接下来,我们将此结果连接回原始表以检索相应的 checks 金额:

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

最终查询产生所需的输出:

<code>group    max_date    checks
  2    1/1/2013    800
  1    1/3/2013    700
  3    1/5/2013    200</code>

重要提示: 强烈建议不要使用保留字(如 date)作为列名。 它可能会导致 SQL 语法错误并使代码更难以维护。 为您的列考虑更具描述性和明确的名称。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn