Erreur MySQL : solution "L'opération doit contenir 1 colonne"
Dans une requête SQL récente, un développeur a rencontré une erreur déroutante : "L'opérande doit contenir 1 colonne." L'erreur a stoppé leur progression, mais après une enquête minutieuse, une solution a été trouvée.
La requête en question tente de récupérer les données de deux tables, « sujets » et « publications », et contient des statistiques pour une sous-requête qui sélectionne deux colonnes de la table « utilisateurs ». Cependant, cette sous-requête a tenté de projeter deux colonnes en une seule, ce qui a généré le message d'erreur.
Erreur de compréhension :
L'erreur « l'opérande doit contenir 1 colonne » se produit lorsqu'une requête tente d'opérer sur plusieurs colonnes (par exemple, un agrégat) comme s'il s'agissait d'une seule colonne. Dans ce cas particulier, la sous-requête sélectionne à la fois « nom d'utilisateur » et « identifiant » dans la table « utilisateurs ».
Problème résolu :
Pour résoudre ce problème, la sous-requête a été reconfigurée pour sélectionner une seule colonne en se joignant directement à la table 'users'. Cette approche permet plus de flexibilité dans la sélection des colonnes requises.
Requête réécrite :
<code class="language-sql">SELECT topics.id, topics.name, topics.post_count, topics.view_count, COUNT(posts.solved_post) AS solved_post, users.username AS posted_by, users.id AS posted_by_id FROM topics LEFT OUTER JOIN posts ON posts.topic_id = topics.id LEFT OUTER JOIN users ON users.id = posts.posted_by WHERE topics.cat_id = :cat GROUP BY topics.id</code>
Avantages de la connexion directe :
Rejoindre directement la table « utilisateurs » offre plusieurs avantages :
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!