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 中国語 Web サイトの他の関連記事を参照してください。