我想选择数据库表中
FileSize
中的值唯一的所有行。
我正在针对 Access 数据库使用 .NET、OleDB 和 SQL:
ID FileName FileSize
------------------------
1 George.txt 84
2 Tom.txt 14
3 Henry.txt 14
4 Dick.txt 38
5 Harry.txc 20
我尝试过以下变体:
SELECT DISTINCT FileSize
FROM DupTable
WHERE COUNT(*) = 1;
此查询引发此错误:
WHERE 子句中不能有聚合函数 (COUNT(*)=1)
查询应返回 ID 为 1、4、5 的行,因为这些
FileSize
值是唯一的。
14的
FileSize
是重复的,应从结果中省略。
任何人都可以建议一个对我有用的 SQL 语句吗?
谢谢!
对于聚合条件,您使用
HAVING
,而不是 WHERE
:
Select FileSize FROM DupTable
GROUP BY FileSize
HAVING COUNT()=1
如果您想要与这些相关联的 ID,您可以使用
Select MAX(ID) AS ID, FileSize FROM DupTable
GROUP BY FileSize
HAVING COUNT()=1
或者通过自连接获取整个记录
Select * FROM DupTable
WHERE FileSize in (
Select FileSize FROM DupTable
GROUP BY FileSize
HAVING COUNT()=1
)