sql >> Databasteknik >  >> RDS >> Mysql

MySQL:Uppdatera alla rader i en tabell som matchar resultaten av en annan fråga

Använda underfrågor

Alternativet som stöds mest

UPDATE INVOICES
   SET s_id = (SELECT cs.s_id
                 FROM CUSTOMERS_AND_SALES cs
                WHERE cs.c_id = INVOICES.c_id),
       s_name = (SELECT cs.s_name
                   FROM CUSTOMERS_AND_SALES cs
                  WHERE cs.c_id = INVOICES.c_id)
 WHERE INVOICES.c_id IN (SELECT cs.s_id
                           FROM CUSTOMERS_AND_SALES cs)

Använda JOINs

UPDATE INVOICES
  JOIN CUSTOMERS_AND_SALES cs ON cs.c_id = INVOICES.c_id
   SET s_id = cs.s_id,
       s_name = cs.s_name


  1. MYSQL-uppdatering med WHERE SELECT-underfrågans fel

  2. MySQL-frågeordning efter flera objekt

  3. Django raw()-fråga, beräknat fält i WHERE-satsen

  4. CodeIgniter listfält