sql >> Database >  >> RDS >> Mysql

KRUIS/BUITEN TOEPASSEN in MySQL

Uw dichtstbijzijnde directe benadering is een join met een gecorreleerde subquery als predikaat.

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
        )

In uw geval heeft u echter maar één veld uit de doeltabel nodig. Dit betekent dat u de gecorreleerde subquery direct in de SELECT-instructie kunt gebruiken.

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. Hoe sqlparameter doorgeven aan IN()?

  2. Hoe kan ik een enkele mssql-verbindingspool gebruiken voor meerdere routes in een Express 4-webtoepassing?

  3. Twee tabellen vergelijken in MySQL

  4. Een opzoekbesturingselement toevoegen aan een formulier in Access 2016