sql >> Databasteknik >  >> RDS >> Mysql

Använd LEFT JOIN för att bara välja en sammanfogad rad

SELECT  *
FROM    table1 t1
LEFT JOIN
        table2
ON      o.id = 
        (
        SELECT  o_id
        FROM    table2 t2
        WHERE   t2.c_id = t1.c_id
        ORDER BY
                t2.c_id DESC, t2.isHeadOffice DESC, t2.o_id DESC
        LIMIT 1
        )

Skapa ett index på table2 (c_id, isHeadOffice, o_id) för att detta ska fungera snabbt.

ORDER BY klausulen i underfrågan kan verka överflödig men den krävs för MySQL för att välja rätt index.



  1. Fel i MySQL-biblioteket för Node.js

  2. Laravel Query Builder - avancerade villkorssatser (valfria parametrar)

  3. Hur redigerar man en lagrad procedur i MySQL?

  4. Oracle Number datatyp till datetime format