sql >> Database >  >> RDS >> Sqlserver

Er kan slechts één uitdrukking worden opgegeven in de selectielijst als de subquery niet wordt geïntroduceerd met EXISTS

U kunt geen twee (of meerdere) kolommen in uw subquery retourneren om de vergelijking te maken in de WHERE A_ID IN (subquery) clausule - welke kolom moet het vergelijken met A_ID tot? Uw subquery moet alleen de kolom die nodig is voor de vergelijking retourneren met de kolom aan de andere kant van de IN . De vraag moet dus de volgende vorm hebben:

SELECT * From ThisTable WHERE ThisColumn IN (SELECT ThatColumn FROM ThatTable)

U wilt ook sorteren, zodat u alleen uit de bovenste rijen kunt selecteren, maar u hoeft de AANTAL niet als een kolom terug te geven om uw sortering uit te voeren; sorteren in de ORDER clausule is onafhankelijk van de kolommen die door de query worden geretourneerd.

Probeer zoiets als dit:

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)


  1. SQL opmaken in SQL Server Management Studio

  2. Hoe duur zijn impliciete conversies aan de kolomzijde?

  3. ORA-01438:waarde groter dan gespecificeerde precisie toegestaan ​​voor deze kolom bij het invoegen van 3

  4. MySQL-prestaties - 5 parameters uit het configuratiebestand