Maison > base de données > tutoriel mysql > Pourquoi ma requête MySQL renvoie-t-elle « L'opérande doit contenir 1 colonne(s) » ?

Pourquoi ma requête MySQL renvoie-t-elle « L'opérande doit contenir 1 colonne(s) » ?

Susan Sarandon
Libérer: 2025-01-12 15:22:42
original
791 Les gens l'ont consulté

Why Does My MySQL Query Return

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

Avantages de la connexion directe :

Rejoindre directement la table « utilisateurs » offre plusieurs avantages :

  • Flexibilité : La sélection des colonnes du tableau « utilisateurs » devient plus simple et permet de sélectionner uniquement les données nécessaires.
  • Simplifier la sous-requête : La suppression d'une sous-requête simplifie l'ensemble de la requête, la rendant plus facile à lire et à maintenir.
  • Performances améliorées : Joindre directement des tables peut parfois améliorer les performances en réduisant le nombre de requêtes requises pour récupérer les données requises.

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