sql >> Databáze >  >> RDS >> Sqlserver

Pokud poddotaz není zaveden pomocí EXISTS, lze ve výběrovém seznamu zadat pouze jeden výraz

V poddotazu nemůžete vrátit dva (nebo více) sloupce, abyste provedli porovnání v WHERE A_ID IN (subquery) klauzule - který sloupec má porovnávat A_ID na? Váš poddotaz musí vrátit pouze jeden sloupec potřebný pro porovnání se sloupcem na druhé straně IN . Dotaz tedy musí mít tvar:

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

Chcete také přidat řazení, abyste mohli vybírat pouze z horních řádků, ale k seřazení nemusíte vracet COUNT jako sloupec; řazení v ORDER klauzule je nezávislá na sloupcích vrácených dotazem.

Zkuste něco takového:

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. Jaký je nejlepší rámec vysoké dostupnosti PostgreSQL? PAF vs. repmgr vs. Patroni Infographic

  2. Jak získat aktuální týdenní data v MySQL

  3. Použití Pythonu a MySQL v procesu ETL

  4. Proč cast/konvertovat z int vrátí hvězdičku