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>
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!