如何按声望阈值获取用户列表?查询结果数量受限问题咨询
Stack Exchange Explorer 查询行数限制与解决方案
嗨,我来帮你解决这个问题~你遇到的情况是正常的,Stack Exchange Data Explorer(也就是你用的SEDE)确实有查询结果行数限制,默认最多只能返回50,000条记录,这是平台为了控制服务器负载特意设置的,不是你的SQL语句有问题哦。
想要获取符合条件的全量用户数据,你可以试试这几个方法:
分页分批查询:利用SQL的
OFFSET和LIMIT关键字拆分结果集。比如第一次执行:SELECT id FROM users WHERE reputation > 5 ORDER BY id LIMIT 50000 OFFSET 0第二次把
OFFSET改成50000,第三次改成100000,以此类推,直到查询返回空结果为止。这里一定要加上ORDER BY id(或者其他唯一有序的字段),不然分页的结果会混乱,出现重复或者遗漏数据的情况。使用官方数据转储:如果需要一次性拿到全量数据,SEDE没法直接满足,但你可以使用Stack Exchange的官方定期数据转储包。这些数据包包含了对应站点的完整用户数据(更新频率大概是每几个月一次),下载后你可以用本地的数据库工具(比如SQLite、MySQL)或者Excel之类的软件,直接筛选出声望大于5的用户记录。
需要注意的是,不管用哪种方法,都要遵守平台的使用规则,不要短时间内发起大量查询给服务器造成额外压力哦。
内容的提问来源于stack exchange,提问作者Konstancs




