在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
答案 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听起来像一个键,它的分组将始终返回不同的组。为什么不单独使用文件名进行分组?其余的查询保持不变。