SQLite如何查询指定字段总和在变量±5范围内的5条随机用户数据
适配需求的SQLite查询方案
调整后符合要求的查询语句如下:
SELECT hex, firewall FROM users WHERE (bypasser + firewall + decryptor + encryptor + antivirus + spam) BETWEEN (${variable} - 5) AND (${variable} + 5) ORDER BY RANDOM() LIMIT 5
补充说明
- 逻辑匹配:上述语句会先筛选6个指定字段的总和落在
${variable}±5闭区间内的用户,再随机取5条返回hex和firewall字段,完全符合你给出的示例要求:当${variable}为6时,会匹配总和处于1~11区间的用户 - 空值兼容:如果你的表中6个筛选字段存在NULL值,求和时会返回NULL导致匹配失效,可将每个字段用
IFNULL(字段名, 0)包裹处理,修改后的WHERE条件如下:WHERE (IFNULL(bypasser,0) + IFNULL(firewall,0) + IFNULL(decryptor,0) + IFNULL(encryptor,0) + IFNULL(antivirus,0) + IFNULL(spam,0)) BETWEEN (${variable} - 5) AND (${variable} + 5)
内容的提问来源于stack exchange,提问作者dezin
相关产品推荐
相关产品推荐

