sql-server - 在 having 子句中使用 count 没有返回行

标签 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  

最佳答案

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

相关文章:

sql - 部分字符串匹配 SQL - 内连接

python - 有没有更快的方法使用 python 将数据帧插入到 SQL 中?

sql - 无法在 EXEC() 后获得 @@ERROR 并出现错误

sql-server - 在TSQL中,如何按 "most occurring"值排序?

sql-server - 防止经典 ASP 中自由响应文本字段的 SQL 注入(inject)

mysql - 如何在查询后合并字段,我知道 CONCAT,但不是这种方式

sql-server - 在 WonderWare 中使用子查询选择所有标签

sql - 如何防止 SSIS 将列名写入平面文件输出?

SQL 服务器 : Attempting to output a count with a date

sql-server - 为什么 SQL 中是 199.96 - 0 = 200?