Mysql
 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
        )

Във вашия случай обаче имате нужда само от едно поле от целевата таблица. Това означава, че можете да използвате корелираната подзаявка директно в израза 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. Как да направите пълно външно присъединяване в MySQL

  2. Изключване на единични кавички в PHP при вмъкване в MySQL

  3. Как да настроите root паролата на нула

  4. MySQL брой елементи в клауза

  5. MySQL НА ДУБЛИРАН КЛЮЧ - последно вмъкване на идентификатор?