Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

LINTAS/LUAR BERLAKU di MySQL

langsung terdekat Anda approximation adalah gabungan dengan sub-kueri berkorelasi sebagai predikat.

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
        )

Namun, dalam kasus Anda, Anda hanya memerlukan satu bidang dari tabel target. Ini berarti Anda dapat menggunakan sub-kueri yang berkorelasi secara langsung dalam pernyataan 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. Tentang Neo4j

  2. Kesalahan saat memuat Modul MySQLdb 'Apakah Anda menginstal mysqlclient atau MySQL-python?'

  3. Jenis di MySQL:BigInt(20) vs Int(20)

  4. Mengambil baris tunggal, kolom tunggal dengan PDO

  5. hasil kueri pivot mysql dengan GROUP BY