使用count子句中没有返回任何行

时间:2013-10-11 18:14:31

标签: sql-server tsql

在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  

2 个答案:

答案 0 :(得分:1)

好的,所以我们只需要分两步完成。首先,获取出现多次的per_id列表,然后获取与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
)

答案 1 :(得分:0)

个人ID听起来像一个键,它的分组将始终返回不同的组。为什么不单独使用文件名进行分组?其余的查询保持不变。