sql >> Databáze >  >> RDS >> Mysql

UPDATE syntaxe pomocí ORDER BY, LIMIT a Multiple Tables

Řešením je vnořit ORDER BY a LIMIT do klauzule FROM jako součást spojení. To vám umožní nejprve najít přesný řádek, který má být aktualizován (ta.id), a poté provést aktualizaci.

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

Kloboukový tip baronu Schwartzovi, aka Xaprbovi, za skvělý příspěvek přesně na toto téma:http://www.xaprb.com/blog/2006/08/10/how-to-use- order-by-and-limit-on-multi-table-updates-in-mysql/



  1. Jak mohu vstoupit do SQL Server uloženého procesu z mého kódu C#?

  2. Vytvořit booleovský sloupec v MySQL s false jako výchozí hodnotou?

  3. Automatické dokončování Jquery a PHP:vyplnění vstupního pole daty z databáze mySQL na základě vybrané možnosti v poli automatického doplňování

  4. Funkce SIN() v Oracle