如何在SEDE查询中获取Stack Exchange提问者的用户名
解决SEDE查询添加提问者用户名的问题
你需要关联Users表来获取用户名,因为Posts表仅通过OwnerUserId存储用户ID,实际用户名存在Users表的DisplayName字段中。而OwnerDisplayName字段为空是因为它仅针对临时匿名用户或未完成注册的用户,正常注册用户的用户名不会存在于此。
修改后的查询代码如下:
SELECT p.Id AS [Post Link], u.DisplayName AS [提问者用户名], Len(p.Body) AS [Body Length], p.Score, p.ViewCount, p.Tags FROM Posts p LEFT JOIN Users u ON p.OwnerUserId = u.Id WHERE Len(p.Body) < 50 AND p.PostTypeId = 1 ORDER BY Len(p.Body) DESC
关键说明:
- 使用
LEFT JOIN Users u ON p.OwnerUserId = u.Id关联用户表,确保即使帖子所有者账号已被删除,仍能保留帖子记录(此时用户名为NULL)。 - 若想将NULL替换为友好提示(比如“已删除用户”),可把
u.DisplayName改为ISNULL(u.DisplayName, '已删除用户') AS [提问者用户名]。 - 之前报错
u.OwnerDisplayName是因为未正确关联Users表,且Users表中不存在OwnerDisplayName字段,正确的字段名是DisplayName。
内容的提问来源于stack exchange,提问作者CrSb0001
相关产品推荐
相关产品推荐

