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

UPDATE-Syntax mit ORDER BY, LIMIT und mehreren Tabellen

Die Lösung besteht darin, ORDER BY und LIMIT als Teil eines Joins in einer FROM-Klausel zu verschachteln. Auf diese Weise können Sie zuerst die genaue Zeile finden, die aktualisiert werden soll (ta.id), und dann die Aktualisierung ausführen.

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

Hut ab vor Baron Schwartz, a.k.a. Xaprb, für den exzellenten Beitrag zu genau diesem Thema:http://www.xaprb.com/blog/2006/08/10/how-to-use- order-by-and-limit-on-multi-table-updates-in-mysql/