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

基于.NET+OleDB,如何筛选Access数据库中FileSize唯一的行?

筛选Access数据库中FileSize值唯一的行

问题背景

需要从Access数据库的DupTable表中,获取所有FileSize值唯一的行(即示例中ID为1、4、5的记录),原SQL语句因在WHERE子句中使用聚合函数报错:

Cannot have aggregate function in WHERE clause (COUNT(*)=1)

可行SQL语句

方法1:子查询筛选唯一FileSize后关联原表

SELECT t.*
FROM DupTable t
INNER JOIN (
    SELECT FileSize
    FROM DupTable
    GROUP BY FileSize
    HAVING COUNT(*) = 1
) AS unique_sizes ON t.FileSize = unique_sizes.FileSize;

逻辑:子查询先通过GROUP BY分组统计每个FileSize的出现次数,用HAVING COUNT(*) = 1筛选出仅出现一次的FileSize,再和原表关联得到对应的完整记录。

方法2:用NOT EXISTS排除重复行

SELECT *
FROM DupTable t1
WHERE NOT EXISTS (
    SELECT 1
    FROM DupTable t2
    WHERE t2.FileSize = t1.FileSize
    AND t2.ID <> t1.ID
);

逻辑:对每一行,检查是否存在其他行拥有相同FileSize但不同ID,如果不存在则保留该行,即该行的FileSize是唯一的。

原SQL错误原因

原语句在WHERE子句中直接使用聚合函数COUNT(*),Access不支持在WHERE子句中使用聚合函数,聚合函数需配合GROUP BY放在HAVING子句中,或嵌套在子查询内使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:39:56