sql >> Base de Datos >  >> RDS >> Mysql

ACTUALIZAR Sintaxis con ORDER BY, LIMIT y tablas múltiples

La solución es anidar ORDER BY y LIMIT en una cláusula FROM como parte de una unión. Esto le permite encontrar primero la fila exacta que se actualizará (ta.id), luego confirmar la actualización.

UPDATE tableA AS target
    INNER JOIN (
      SELECT ta.id
      FROM tableA AS ta
        INNER JOIN tableB AS tb ON tb.id = ta.user_id
        WHERE tb.username = '$varName'
        ORDER BY ta.datetime DESC
        LIMIT 1) AS source ON source.id = target.id
    SET col1 = '$var';

Felicitaciones a Baron Schwartz, también conocido como Xaprb, por la excelente publicación sobre este tema exacto:http://www.xaprb.com/blog/2006/08/10/how-to-use- order-by-and-limit-on-multi-table-updates-in-mysql/