从 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中文网其他相关文章!