Erreur MySQL : correction du problème "l'opérande doit contenir 1 colonne"
Dans votre requête MySQL, vous avez rencontré l'erreur « L'opérande doit contenir 1 colonne ». 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 à cet emplacement.
Erreur de compréhension :
La requête erronée contient une sous-requête :
<code class="language-sql">(SELECT users.username AS posted_by, users.id AS posted_by_id FROM users WHERE users.id = posts.posted_by)</code>
Cette sous-requête récupère deux colonnes, "posted_by" et "posted_by_id". Cependant, vous utilisez cette sous-requête comme une seule colonne dans la requête externe :
<code class="language-sql">COUNT( posts.solved_post ) AS solved_post, (SUBQUERY)</code>
Cette incohérence entraîne l'erreur « l'opérande doit contenir 1 colonne » car la requête externe attend une seule colonne à cet emplacement.
Solution :
Méthode 1 : Utiliser la connexion par table
Pour résoudre ce problème, pensez à rejoindre directement la table "users" au lieu d'utiliser une sous-requête. Cela vous permettra de sélectionner explicitement les colonnes "posted_by" et "posted_by_id" sans violer la contrainte de colonne unique.
<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>
Méthode 2 : Sélectionner une seule colonne dans une sous-requête
Alternativement, si vous insistez pour utiliser une sous-requête, vous pouvez la modifier pour renvoyer uniquement les colonnes requises. Par exemple, vous pouvez récupérer uniquement la colonne "posted_by" :
<code class="language-sql">(SELECT users.username AS posted_by FROM users WHERE users.id = posts.posted_by)</code>
En sélectionnant une seule colonne dans une sous-requête, vous vous assurez qu'elle répond aux exigences de colonne unique de la requête 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!