在 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
最佳答案
好的,所以我们只需要分两步完成。首先,获取多次出现的 per_id 列表,然后获取与这些 per_id 对应的文件名列表。
select file_name
from mytable
where per_id in (
select per_id from mytable group by per_id having count(*) > 1
)
关于sql-server - 在 having 子句中使用 count 没有返回行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19324685/