我的查询如下,其中包含一个子查询:

 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)

我收到的错误是...

Only one expression can be specified in the select list when the subquery is not
introduced with EXISTS.`

当我单独运行子查询时,它返回的结果很好,所以我假设主查询存在一些问题?

推荐答案

在第A_ID多列中,哪个子子句不能返回比较?子查询必须只返回比较所需的一列,而不是IN另一侧的列.因此,查询需要采用以下形式:

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

您还希望添加排序,以便只从最上面的行中进行 Select ,但不需要将计数作为列返回即可进行排序;ORDER子句中的排序独立于查询返回的列.

试试这样:

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)

Sql相关问答推荐

仅在新值与旧值不同时才插入PostgreSQL

Oracle中的分层查询

在数据分区内执行确定

使用交叉应用透视表在SQL中转换分段时间段&

GROUP BY与多个嵌套查询T—SQL

用于动态查询情况的存储过程常识模式

在Oracle中,如何删除具有特定值的行,仅当它是重复的行?

如何在PostgreSQL中的一列中添加两个文本?

更新其组的日期字段值小于最大日期减go 天数的记录

了解放置时的连接

如何简化此PostgreSQL查询以计算平均值?

在WHERE EXISTS子查询中,列返回是否重要?

Select 组中的第一行,但在并发环境中

计算不同模式的时间跨度

如何根据 SQL Server 中 1 条语句中 SELECT 的结果进行 INSERT 或 UPDATE

如何使用 join 和 where 子句从另一表中仅删除一个表中的值

如何使用Informix创建一个临时表,将数据从根表导入并使用筛选条件

在 MS Access VBA 中,如何测量显示查询的时间?

Postgres:表的累积视图

SQL Server 分区和 Run Case 语句