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

MySQLでのクロス/外部適用

    最も近い直接 近似は、述語として相関サブクエリを使用した結合です。

    SELECT
       ORD.ID
      ,ORD.NAME
      ,ORD.DATE
      ,ORD_HISTORY.VALUE
    FROM
      ORD
    INNER JOIN
      ORD_HISTORY
        ON  ORD_HISTORY.<PRIMARY_KEY>
            =
            (SELECT ORD_HISTORY.<PRIMARY_KEY>
               FROM ORD_HISTORY
              WHERE ORD.ID = ORD_HISTORY.ID
                AND ORD.DATE <= ORD_HISTORY.DATE
           ORDER BY ORD_HISTORY.DATE DESC
              LIMIT 1
            )
    

    ただし、あなたの場合、必要なのはターゲットテーブルのフィールドが1つだけです。これは、相関サブクエリをSELECTステートメントで直接使用できることを意味します。

    SELECT
       ORD.ID
      ,ORD.NAME
      ,ORD.DATE
      ,(SELECT ORD_HISTORY.VALUE
          FROM ORD_HISTORY
         WHERE ORD.ID = ORD_HISTORY.ID
           AND ORD.DATE <= ORD_HISTORY.DATE
      ORDER BY ORD_HISTORY.DATE DESC
         LIMIT 1
       )   AS VALUE
    FROM
      ORD
    


    1. MySQLでタイムスタンプを日時に変換する方法は?

    2. 主キーが重要である理由とその選択方法

    3. Oracleでアクティブ/オープン接続を一覧表示するにはどうすればよいですか?

    4. テーブルのセットでCDCを有効にする方法、またはSQLServerのデータベース内のすべてのテーブルで有効にする方法-SQLServerチュートリアル