Maison >base de données >tutoriel mysql >Pourquoi ne puis-je pas utiliser LIMIT dans une requête UPDATE avec plusieurs tables dans MySQL ?

Pourquoi ne puis-je pas utiliser LIMIT dans une requête UPDATE avec plusieurs tables dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-26 02:50:02727parcourir

Why Can't I Use LIMIT in an UPDATE Query with Multiple Tables in MySQL?

Utilisation incorrecte de UPDATE et LIMIT dans les requêtes MySQL

Question :

Comment puis-je résoudre l'erreur « Utilisation incorrecte de UPDATE et LIMIT » lors de l'exécution d'une requête MySQL ?

Problème :

Le code MySQL suivant génère une erreur en raison d'une utilisation incorrecte de UPDATE et LIMIT :

$q = "UPDATE users INNER JOIN contact_info ON contact_info.user_id = users.user_id SET active.users = NULL WHERE (email.contact_info = '" . mysqli_real_escape_string($mysqli, $x) . "' AND active.users = '" . mysqli_real_escape_string($mysqli, $y) . "') LIMIT 1";

Réponse :

La documentation MySQL pour UPDATE indique :

"Pour la syntaxe à tables multiples, UPDATE met à jour les lignes dans chaque table nommée dans table_references qui satisfont aux conditions. Dans ce cas, ORDER BY et LIMIT ne peuvent pas être utilisés. "

Par conséquent, lors de l'utilisation de la syntaxe à tables multiples pour UPDATE, il n'est pas possible d'utiliser LIMIT. clause. Cette restriction est en place pour éviter les mises à jour incohérentes sur plusieurs tables.

Correction :

Pour résoudre l'erreur, supprimez la clause LIMIT de la requête :

$q = "UPDATE users INNER JOIN contact_info ON contact_info.user_id = users.user_id SET active.users = NULL WHERE (email.contact_info = '" . mysqli_real_escape_string($mysqli, $x) . "' AND active.users = '" . mysqli_real_escape_string($mysqli, $y) . "')";

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn