sql >> Database teknologi >  >> RDS >> Mysql

Brug af LEFT JOIN til kun at vælge én sammenføjet række

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
        )

Opret et indeks på table2 (c_id, isHeadOffice, o_id) for at dette fungerer hurtigt.

ORDER BY klausulen i underforespørgslen kan virke overflødig, men den er påkrævet for MySQL for at vælge det rigtige indeks.



  1. vBulletin som login for hele webstedet (rediger:der er gjort en vis fremskridt)

  2. SQL-case når FROM(UNIX_TIME)

  3. Undgå sorteringer med Merge Join-sammenkædning

  4. Flerniveaubrugere i databasetabellen