sql >> データベース >  >> RDS >> Mysql

SELECTステートメントの2行間のMySQLの違い

    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
    

    SQL Fiddle

    または、lag()をエミュレートします MySqlハックネスを介して機能します...

    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
    

    SQL Fiddle



    1. 2列の選択で1列の重複する値を削除します

    2. CentOS用のMariaDBクラスターオフラインインストール

    3. SSMSの結果をグリッドに-CRLFはコピー/貼り付けで保存されません-より良いテクニックはありますか?

    4. SQLiteでNULLを「N/A」に置き換える3つの方法