Lors du développement d'une base de données, il est courant de rencontrer des erreurs MySQL. Une de ces erreurs, "'#1241 - L'opérande doit contenir 1 colonne(s)'", survient fréquemment lors de l'utilisation de sous-requêtes qui renvoient plusieurs colonnes. Cela se produit généralement lorsqu'une sous-requête fournit plus d'une colonne à une requête externe attendant un résultat d'une seule colonne.
Le message d'erreur indique une incompatibilité entre le nombre de colonnes renvoyé par une sous-requête et l'attente de la requête principale. L'instruction SELECT
externe tente d'utiliser le résultat de la sous-requête multicolonne comme s'il s'agissait d'une valeur unique.
Cette erreur peut être résolue en ajustant la structure de votre requête. Voici deux approches efficaces :
<code class="language-sql">SELECT t.id, t.name, t.post_count, t.view_count, COUNT(p.solved_post) AS solved_post, u.username AS posted_by, u.id AS posted_by_id FROM topics t LEFT OUTER JOIN posts p ON p.topic_id = t.id LEFT OUTER JOIN users u ON u.id = p.posted_by WHERE t.cat_id = :cat GROUP BY t.id;</code>
MAX()
, MIN()
, AVG()
) ou la sélection d'une colonne spécifique dans la table users
.<code class="language-sql">SELECT t.id, t.name, t.post_count, t.view_count, COUNT(p.solved_post) AS solved_post, (SELECT u.username FROM users u WHERE u.id = p.posted_by) AS posted_by_username FROM topics t LEFT OUTER JOIN posts p ON p.topic_id = t.id GROUP BY t.id;</code>
En implémentant l'une ou l'autre de ces solutions, vous corrigerez l'erreur d'opérande et récupérerez avec précision les données requises de votre base de données MySQL. Le choix de la meilleure solution dépend de vos besoins spécifiques en matière de données et de la conception de vos requêtes.
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!