Sélection de sous-requête SQL dans la clause WHERE IN : Erreur de compréhension "Lorsque la sous-requête ne commence pas par EXISTS, une seule expression peut être spécifiée dans la liste de sélection"
Lorsque vous essayez d'ajouter une sous-requête à une clause WHERE IN, assurez-vous toujours que la sous-requête renvoie une seule colonne à des fins de comparaison. L'erreur « Une seule expression peut être spécifiée dans la liste de sélection lorsque la sous-requête ne commence pas par EXISTE » signifie que votre sous-requête renvoie plusieurs colonnes.
Pour corriger cela, examinons la requête donnée :
<code class="language-sql">select count(distinct dNum) from myDB.dbo.AQ where A_ID in (SELECT DISTINCT TOP (0.1) PERCENT A_ID, COUNT(DISTINCT dNum) AS ud FROM myDB.dbo.AQ WHERE M > 1 and B = 0 GROUP BY A_ID ORDER BY ud DESC)</code>
La sous-requête entre parenthèses renvoie deux colonnes : A_ID et ud (nombre de valeurs dNum distinctes pour chaque A_ID). Cependant, la clause WHERE IN s'attend à ce qu'une seule colonne soit comparée à A_ID. Par conséquent, nous devons modifier la sous-requête pour renvoyer uniquement la colonne A_ID :
<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>
La sous-requête renvoie désormais une seule colonne, A_ID, qui peut être utilisée à des fins de comparaison dans la clause WHERE IN. De plus, nous pouvons supprimer la clause COUNT(DISTINCT dNum) AS ud car elle ne nécessite plus de sélectionner uniquement les 0,1 % supérieurs des valeurs A_ID.
Cette requête modifiée devrait résoudre l'erreur spécifiée et vous permettre de récupérer les résultats souhaités. N'oubliez pas que lorsque vous utilisez une sous-requête dans une clause WHERE IN, assurez-vous que la sous-requête renvoie uniquement les colonnes requises pour la comparaison.
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!