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

OPDATERING Syntaks med ORDER BY, LIMIT og flere tabeller

Løsningen er at indlejre ORDER BY og LIMIT i en FROM-klausul som en del af en join. Dette lader dig finde den nøjagtige række, der skal opdateres (ta.id), først, og derefter foretage opdateringen.

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

Hattip til Baron Schwartz, a.k.a. Xaprb, for det fremragende indlæg om netop dette emne:http://www.xaprb.com/blog/2006/08/10/how-to-use- ordre-efter-og-grænse-på-multi-table-opdateringer-i-mysql/



  1. Sådan bruges AI til SQL Tuning til en rigtig automatiseret proces

  2. Top GUI-værktøjer til PostgreSQL

  3. SQL rækkefølge efter antal

  4. Sammenligning af datoer i MySQL ignorerer tidsdelen af ​​et DateTime-felt