Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden Sie LEFT JOIN, um nur eine verbundene Zeile auszuwählen

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
        )

Erstellen Sie einen Index für table2 (c_id, isHeadOffice, o_id) damit dies schnell funktioniert.

Der ORDER BY -Klausel in der Unterabfrage mag überflüssig erscheinen, ist aber für MySQL erforderlich um den richtigen Index auszuwählen.