Mysql
 sql >> Baza danych >  >> RDS >> Mysql

CROSS/OUTER APPLY w MySQL

Twój najbliższy bezpośredni aproksymacja jest sprzężeniem ze skorelowanym podzapytaniem jako predykatem.

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
        )

Jednak w Twoim przypadku potrzebujesz tylko jednego pola z tabeli docelowej. Oznacza to, że możesz użyć skorelowanego podzapytania bezpośrednio w instrukcji 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak utworzyć złożony klucz podstawowy w MySQL

  2. Utwórz tabelę w MySQL

  3. Jak przeprowadzić migrację samodzielnego Moodle do skalowalnej konfiguracji klastrowej bazy danych

  4. Przygotowane oświadczenia MySQL

  5. UNIX_TIMESTAMP() Przykłady – MySQL