Maison > base de données > tutoriel mysql > Pourquoi ma sous-requête SQL renvoie-t-elle « Une seule expression peut être spécifiée dans la liste de sélection lorsque la sous-requête n'est pas introduite avec EXISTS » ?

Pourquoi ma sous-requête SQL renvoie-t-elle « Une seule expression peut être spécifiée dans la liste de sélection lorsque la sous-requête n'est pas introduite avec EXISTS » ?

Mary-Kate Olsen
Libérer: 2025-01-11 13:32:44
original
549 Les gens l'ont consulté

Why Does My SQL Subquery Return

Restrictions de la liste de sélection des sous-requêtes SQL

Lorsque vous rencontrez l'erreur "Lorsque la sous-requête ne commence pas par EXISTS, une seule expression peut être spécifiée dans la liste de sélection", cela signifie qu'il y a un problème avec la valeur de retour de la sous-requête. Dans une sous-requête imbriquée dans une clause WHERE IN, assurez-vous toujours qu'une seule colonne est renvoyée pour comparaison avec l'autre côté de IN.

La requête fournie contient initialement une sous-requête qui renvoie A_ID et COUNT(DISTINCT dNum) sous la forme ud. Cependant, dans la clause WHERE IN, la sous-requête ne peut renvoyer qu'une seule colonne, qui sera comparée au A_ID de la requête principale. La raison pour laquelle cette limitation existe est que la fonction de la sous-requête est de renvoyer une liste de valeurs pour vérifier si l'A_ID de la requête principale correspond à une valeur du résultat de la sous-requête.

Pour résoudre ce problème, modifiez la sous-requête pour renvoyer uniquement la colonne A_ID, qui sera comparée à l'A_ID dans la clause WHERE IN de la requête principale. De plus, le tri peut être utilisé dans la clause ORDER pour sélectionner des lignes d'une sous-requête sans renvoyer COUNT sous forme de colonne.

Exemple de requête corrigé :

<code class="language-sql">SELECT COUNT(DISTINCT dNum)
FROM myDB.dbo.AQ
WHERE A_ID IN (
    SELECT DISTINCT TOP (0.1) PERCENT A_ID
    FROM myDB.dbo.AQ
    WHERE M > 1 AND B = 0
    GROUP BY A_ID
    ORDER BY COUNT(DISTINCT dNum) DESC
)</code>
Copier après la connexion

En implémentant ces modifications, les requêtes peuvent renvoyer correctement les résultats souhaités tout en respectant la règle du renvoi d'une seule colonne pour les comparaisons WHERE IN.

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