2

在 SQL Server 2005 中,我有一个表,其中有与某些个人 ID 号相关联的不同文件名。我想提取个人 ID 计数大于 1 的所有文件名。这就是我正在做的,但它提取了 0 条记录:

SELECT [file_name], per_ID
FROM mytable
GROUP BY [file_name], per_ID
HAVING COUNT(per_ID) > 1
ORDER BY per_ID, [file_name] ASC

我还尝试了以下相同的结果:

SELECT [file_name], per_ID, COUNT(per_ID)
FROM mytable
GROUP BY [file_name],per_ID
HAVING COUNT(per_ID) > 1
ORDER BY per_ID, [file_name] ASC 

如果有人能告诉我我做错了什么,我将不胜感激。

这是表结构和数据示例:

file_name | per_ID
9995573157  1111
5996110978  2222
5996111208  3333
8996693000  3333
8996693215  4444
7997617867  5555
9997335346  5555

我正在寻找的结果将是 per_ID 3333 和 5555 中的文件名

5996111208  
8996693000
7997617867  
9997335346  
4

2 回答 2

1

好的,所以我们只需要分两步完成。首先,获取多次出现的 per_ids 列表,然后获取与这些 per_ids 对应的 file_names 列表。

select file_name
from mytable
where per_id in (
    select per_id from mytable group by per_id having count(*) > 1
)
于 2013-10-11T18:16:46.320 回答
0

个人 ID 听起来像一个键,按它分组总是会返回不同的组。为什么不尝试仅按文件名分组?查询的其余部分保持不变。

于 2013-10-11T18:22:23.867 回答