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

前の日付を選択、mysql

    「前の」行から必要な列は1つだけなので、次のように試すことができます。

    SELECT
      dte,
      id,
      value,
      (
        SELECT value
        FROM atable
        WHERE id = t.id
          AND dte < t.dte
        ORDER BY dte DESC
        LIMIT 1
      ) AS previous_value
    FROM atable t
    

    より「以前の」属性を取得する必要がある場合は、より洗練されたアプローチを次に示します。

    SELECT
      t1.dte,
      t1.id,
      t1.value,
      t2.dte,
      t2.value,
      …
    FROM atable t1
      LEFT JOIN atable t2 ON t1.id = t2.id AND t1.dte > t2.dte
      LEFT JOIN atable t3 ON t1.id = t3.id AND t1.dte > t3.dte AND t3.dte > t2.dte
    WHERE t3.id IS NULL
    

    2番目のアプローチでは、三角形の自己結合と自己への反結合を使用します。基本的に、次のように翻訳できます:



    1. トランザクションに参加できません

    2. UTCからISTに変換するmysql

    3. INOUTパラメータを使用したOracleの例のストアドプロシージャ

    4. PDOStatementには何が含まれ、fetch / fetchAllの使用法は何ですか?