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

MySQL - SELEZIONA quindi AGGIORNA

Basta fare UPDATE quando SELECT allo stesso tempo.

Cambia questo:

SELECT product_name, sku, qty 
FROM supplier_dropship_items 
WHERE supplier_id = '3' AND status = '2';

a questo:

UPDATE supplier_dropship_items as t, 
(
    SELECT id, product_name, sku, qty 
    FROM supplier_dropship_items 
    WHERE supplier_id = '3' AND status = '2'
) as temp
SET status = '1' WHERE temp.ID = t.ID;

Questo presuppone che tu abbia una colonna ID all'interno della tabella poiché è così che dovrebbe essere impostata e come sarebbe qualsiasi tabella normalizzata.

Modifica

Ecco un link per la documentazione su questa sintassi

In sostanza, ciò che sta facendo è cercare di aggiornare la tabella che qui stiamo alias come t , esegui contemporaneamente un'istruzione select.
Questa istruzione select restituisce una tabella dei risultati che chiamiamo alias con il nome temp .
Quindi ora immagina che il risultato della tua istruzione select sia all'interno di temp , mentre l'intera tabella che stai aggiornando è all'interno di t .
Finalmente aggiorni lo status campo a 1 dove il ID 's (su questi due set di risultati alias) corrispondono