MySQL : requête de mise à jour des enregistrements à l'aide d'une limite
Lorsque vous travaillez avec MySQL, il est possible de rencontrer des scénarios dans lesquels vous devez mettre à jour un élément spécifique plage de lignes dans un tableau. Cet article aborde la question de savoir s'il est possible d'utiliser une clause LIMIT dans une requête UPDATE et fournit des conseils sur la façon d'y parvenir.
Erreur de syntaxe et utilisation correcte
Votre requête initiale a tenté de mettre à jour les lignes commençant par 1 001 et les 1 000 enregistrements suivants. Cependant, la syntaxe utilisée est incorrecte. Dans MySQL, la clause LIMIT est utilisée pour limiter le nombre de lignes sélectionnées, et non les lignes mises à jour. La bonne façon de mettre à jour une plage spécifique de lignes consiste à utiliser une sous-requête.
Par exemple, pour mettre à jour les 1 000 premières lignes avec p_id défini sur 3, vous utiliserez ce qui suit :
UPDATE `oltp_db`.`users` SET p_id = 3 WHERE id IN ( SELECT id FROM ( SELECT id FROM `oltp_db`.`users` ORDER BY id ASC LIMIT 0, 1000 ) tmp )
Gestion des valeurs NULL
Dans votre deuxième requête, vous avez tenté de mettre à jour les lignes avec p_id défini à NULL. Toutefois, la requête échouerait car les valeurs NULL ne peuvent pas être comparées à des valeurs non NULL lors d’une vérification d’égalité. Pour mettre à jour les lignes avec des valeurs NULL p_id, vous pouvez utiliser les fonctions IS NULL et COALESCE() :
UPDATE `oltp_db`.`users` SET p_id = COALESCE(3, p_id) WHERE p_id IS NULL
En suivant ces directives, vous pouvez mettre à jour efficacement des lignes spécifiques de votre table MySQL, même lorsque vous traitez avec NULL. valeurs.
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!