MySQL SELECT ステートメント内の行間の差異の計算
問題:
決定方法MySQL SELECT ステートメントの後続の 2 つの行間の値の違いは?提供されるテーブルには、キロメートル、日付、車の ID などのデータが含まれています。目標は、前の日付からのキロメートル数を示す追加の列を含むビューを作成することです。
解決策:
これを達成するには、LEFT を組み合わせます。 JOINとサブクエリを使用します。 LEFT JOIN を使用すると、myTable テーブルからデータを取得できますが、サブクエリにより、現在の行より前の日付を持つ最新の行との比較が確実に行われます。このアプローチでは、キロメートル単位で望ましい差が効果的に生成されます。
SELECT mt1.ID, mt1.Kilometers, mt1.date, mt1.Kilometers - IFNULL(mt2.Kilometers, 0) AS number_km_since_last_date FROM myTable mt1 LEFT JOIN myTable mt2 ON mt2.Date = ( SELECT MAX(Date) FROM myTable mt3 WHERE mt3.Date < mt1.Date ) ORDER BY mt1.date
代替ソリューション:
別の方法では、MySQL のハッキング機能を使用して lag() 関数をエミュレートします。
SET @kilo=0; SELECT mt1.ID, mt1.Kilometers - @kilo AS number_km_since_last_date, @kilo := mt1.Kilometers Kilometers, mt1.date FROM myTable mt1 ORDER BY mt1.date
結果:
どちらの方法も、並べ替えられたテーブル内の連続する行間のキロメートル単位の差を正常に計算し、必要な追加情報を提供するビューが得られます。
以上がMySQL SELECT ステートメント内の行間の差異を計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。