sql >> Database >  >> RDS >> Mysql

UPDATE-syntaxis met ORDER BY, LIMIT en meerdere tabellen

De oplossing is om ORDER BY en LIMIT in een FROM-component te nesten als onderdeel van een join. Hiermee kunt u eerst de exacte rij vinden die moet worden bijgewerkt (ta.id) en vervolgens de update uitvoeren.

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

Hoedtip voor Baron Schwartz, ook bekend als Xaprb, voor de uitstekende post over dit exacte onderwerp:http://www.xaprb.com/blog/2006/08/10/how-to-use- order-by-and-limit-on-multi-table-updates-in-mysql/



  1. 4 manieren om een ​​getal op te maken zonder decimalen in Oracle

  2. php json_encode mysql resultaat

  3. Is het mogelijk om MongoDB-gegevens te lezen, te verwerken met Hadoop en uit te voeren in een RDBS (MySQL)?

  4. PHP MySQLI SQL-injectie voorkomen