sql >> Databasteknik >  >> RDS >> Mysql

UPPDATERA syntax med ORDER BY, LIMIT och flera tabeller

Lösningen är att kapsla ORDER BY och LIMIT i en FROM-klausul som en del av en join. Det här låter dig hitta den exakta raden som ska uppdateras (ta.id) först, och sedan utföra uppdateringen.

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

Hatttips till Baron Schwartz, a.k.a. Xaprb, för det utmärkta inlägget om just detta ämne:http://www.xaprb.com/blog/2006/08/10/how-to-use- order-by-and-limit-on-multi-table-updates-in-mysql/



  1. Hur ställer jag in det valda objektet i en rullgardinsmeny

  2. Multiple REPLACE-funktion i Oracle

  3. JSON_STORAGE_FREE() – Ta reda på hur mycket lagringsutrymme som frigjordes efter en uppdatering av ett JSON-dokument i MySQL

  4. välj duplicerad post och räkna post från kommaseparerad i mysql