ホームページ >データベース >mysql チュートリアル >SQL SELECT ステートメントで前の行の値にアクセスして使用するにはどうすればよいですか?
SQL SELECT クエリ内の前の行データの取得
このガイドでは、SQL テーブル内の連続する行間の差異を計算するという課題に取り組みます。 標準 SQL には行の順序が固有に考慮されていないため、単純な減算では十分ではありません。 解決策には、LAG
関数を活用することが含まれます。
LAG
関数は、SELECT
ステートメント内の先行する行からデータを取得します。 その構文は次のとおりです:
<code class="language-sql">LAG(column_name, offset, default) OVER (ORDER BY order_column)</code>
内訳は次のとおりです:
column_name
: 前の行から必要なデータを含む列。offset
: 遡る行数を指定します (直前の行の場合は 1)。default
: offset
が最初の行を超える場合に返される値。order_column
: 行の順序を定義する列。実装例:
value
列で順序付けされた連続する Id
エントリの差を計算するには:
<code class="language-sql">SELECT value - LAG(value, 1, 0) OVER (ORDER BY Id) AS difference FROM your_table;</code>
このクエリは、現在の行の value
から前の行の value
(オフセット 1) を減算します。 Id
列により正しい順序が確保され、連続しない Id
値によって発生する問題が防止されます。 0
デフォルトは最初の行を処理し、エラーを回避します。 結果は、計算された変動を示す新しい difference
列です。
以上がSQL SELECT ステートメントで前の行の値にアクセスして使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。