Erreur MySQL "l'opérande doit contenir 1 colonne" solution
Cet article résoudra l'erreur « l'opérande doit contenir 1 colonne(s) » qui se produit dans les requêtes MySQL. Cette erreur se produit généralement lorsqu'une sous-requête renvoie plusieurs colonnes, mais que la requête externe n'attend qu'une seule colonne.
Incompréhension :
L'erreur « l'opérande doit contenir 1 colonne(s) » indique que l'opérande (ici, une sous-requête) devait renvoyer une seule colonne, mais a en fait renvoyé plusieurs colonnes, ce qui entraîne une incompatibilité de numéro de colonne.
Problème résolu :
Ce problème peut être résolu en modifiant la requête pour garantir que la sous-requête ne renvoie qu'une seule colonne. Il existe deux méthodes principales :
1. Utilisez REJOINDRE :
Évitez d'utiliser des sous-requêtes et utilisez directement JOIN
pour joindre la table users
avec la table posts
sur la colonne posted_by
. Cette méthode est plus flexible lors de la sélection de colonnes spécifiques dans le tableau users
.
<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>
2. Sélectionnez une seule colonne dans une sous-requête :
Vous pouvez également modifier la sous-requête pour renvoyer une seule colonne à l'aide de la clause GROUP BY
. Cependant, cette approche peut entraîner une perte de données si plusieurs utilisateurs possèdent le même identifiant.
<code class="language-sql">SELECT topics.id, topics.name, topics.post_count, topics.view_count, COUNT(posts.solved_post) AS solved_post, (SELECT users.username FROM users WHERE users.id = posts.posted_by GROUP BY users.id) AS posted_by FROM topics LEFT OUTER JOIN posts ON posts.topic_id = topics.id WHERE topics.cat_id = :cat GROUP BY topics.id</code>
La méthode que vous choisissez dépend de vos besoins spécifiques et de la structure de vos données. La première approche (utilisant JOIN) est généralement la solution la plus efficace et la plus claire.
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!