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

UPDATE Sintassi con ORDER BY, LIMIT e Multiple Tables

La soluzione è annidare ORDER BY e LIMIT in una clausola FROM come parte di un join. Questo ti consente di trovare prima la riga esatta da aggiornare (ta.id), quindi eseguire il commit dell'aggiornamento.

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';

Consiglio al barone Schwartz, alias Xaprb, per l'eccellente post su questo argomento esatto:http://www.xaprb.com/blog/2006/08/10/how-to-use- order-by-and-limit-on-multi-table-updates-in-mysql/