我想从 Access (accdb) 数据库表中的列中查找不同的值

问题描述 投票:0回答:1

我想选择数据库表中

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 语句吗?

谢谢!

sql .net ms-access distinct
1个回答
0
投票

对于聚合条件,您使用

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
)
© www.soinside.com 2019 - 2024. All rights reserved.