You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过OleDb获取SQL查询返回的记录数(Access JetEngine)

解决Access Jet Engine统计唯一记录数的问题

针对你需要统计RoundData表内队号大于0的不同Teams数量的需求,因为Jet Engine不直接支持COUNT(DISTINCT),可以通过将DISTINCT子查询作为派生表的方式实现,具体SQL语句如下:

SELECT COUNT(*) 
FROM (
    SELECT DISTINCT {Team} 
    FROM [RoundData] 
    WHERE {Team} > 0
) AS DistinctTeams

代码示例

替换你之前的错误语句,用以下代码即可直接获取数量:

CmdStr = $"SELECT COUNT(*) FROM (SELECT DISTINCT {Team} FROM [RoundData] WHERE {Team} > 0) AS DistinctTeams";
ReadCmd = new OleDbCommand(CmdStr, ResultsReportingOleDbConnection);
int teamCount = (int)ReadCmd.ExecuteScalar();

错误原因说明

你之前的语句报错是因为子查询返回了多条结果,但外层用了=进行匹配,=要求子查询只能返回单行数据,所以触发了"At most one record can be returned by this subquery"的错误。而将子查询作为派生表后,外层可以直接统计这个临时表的行数,正好就是唯一Teams的数量。

内容的提问来源于stack exchange,提问作者Tony H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:47:41