Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - SÉLECTIONNER puis METTRE À JOUR

Faites simplement la UPDATE lorsque vous SELECT en même temps.

Modifiez ceci :

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

à ceci :

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;

Cela suppose que vous avez une colonne ID dans votre table car c'est ainsi qu'elle doit être configurée et à quoi ressemblerait n'importe quelle table normalisée.

Modifier

Voici un lien vers la documentation sur cette syntaxe

Essentiellement, ce que cela fait, c'est en essayant de mettre à jour la table que nous aliasons ici en tant que t , vous exécutez simultanément une instruction select.
Cette instruction select renvoie une table de résultats que nous aliasons avec le nom temp .
Alors imaginez maintenant que le résultat de votre instruction select se trouve dans temp , alors que toute la table que vous mettez à jour est à l'intérieur de t .
Enfin, vous mettez à jour le status champ à 1 où le ID 's (sur ces deux ensembles de résultats d'alias) correspondent