Maison > base de données > tutoriel mysql > Comment corriger l'erreur MySQL « L'opérande doit contenir 1 colonne(s) » ?

Comment corriger l'erreur MySQL « L'opérande doit contenir 1 colonne(s) » ?

Mary-Kate Olsen
Libérer: 2025-01-12 15:27:43
original
841 Les gens l'ont consulté

How to Fix the

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal