MySQL - Requête UPDATE avec LIMIT
Cet article aborde les défis rencontrés lors de la tentative de mise à jour de lignes spécifiques via une clause LIMIT dans une base de données MySQL . L'objectif est de mettre à jour les lignes dans une plage spécifiée d'ID de ligne.
Erreur de syntaxe et requête correcte
La requête que vous avez fournie, "UPDATE oltp_db.users SET p_id = 3 LIMIT 1001, 1000", est syntaxiquement incorrect. La syntaxe correcte pour utiliser LIMIT dans une requête UPDATE consiste à spécifier un numéro de ligne de départ (décalage) et un nombre de lignes à mettre à jour. La requête correcte doit être :
UPDATE `oltp_db`.`users` SET p_id = 3 LIMIT 1001, 1000;
Mise à jour des lignes avec des valeurs NULL
Votre requête, "UPDATE oltp_db.users SET p_id = 3 WHERE p_id = null", est également incorrect. L'opérateur d'égalité "=" ne peut pas être utilisé avec la valeur NULL. Pour mettre à jour les lignes avec des valeurs NULL, utilisez l'opérateur IS NULL comme suit :
UPDATE `oltp_db`.`users` SET p_id = 3 WHERE p_id IS NULL;
Mise à jour de plusieurs lignes à l'aide de LIMIT
Pour limiter le nombre de lignes mises à jour, utilisez une sous-requête pour sélectionner une plage spécifique d'ID de ligne, comme illustré dans la requête suivante :
UPDATE table_name SET name='test' WHERE id IN ( SELECT id FROM ( SELECT id FROM table_name ORDER BY id ASC LIMIT 0, 10 ) tmp )
Cette requête met à jour les lignes avec la colonne « nom » définie sur « test » où les ID de ligne se situent dans la plage spécifiée. La sous-requête interne sélectionne les 10 premiers ID de ligne de la table, qui sont ensuite utilisés dans la clause IN de la requête de mise à jour externe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!