如何在SQLite3中查询用户共同ID并分列展示对应得分?
解决方案
针对你的需求,这里提供两种适合SQLite3的查询方法:
方法一:自连接查询
通过将表与自身关联,匹配同一ID下两个用户的得分:
SELECT t1.id AS "ID", t1.score AS "Score User1", t2.score AS "Score User2" FROM your_table t1 JOIN your_table t2 ON t1.id = t2.id WHERE t1.username = 'User1' AND t2.username = 'User2';
说明:
- 原表名
table是SQL关键字,实际使用时建议改为scores这类合法名称,避免语法错误;如果一定要用table,需要用双引号括起来写成"table" t1和t2是表的两个别名,分别对应User1和User2的记录,通过ID关联确保是共同打分的ID
方法二:条件聚合查询
适合需要扩展多个用户的场景,通过分组和条件判断提取得分:
SELECT id AS "ID", MAX(CASE WHEN username = 'User1' THEN score END) AS "Score User1", MAX(CASE WHEN username = 'User2' THEN score END) AS "Score User2" FROM your_table WHERE username IN ('User1', 'User2') GROUP BY id HAVING COUNT(DISTINCT username) = 2;
说明:
WHERE先筛选出指定用户的记录,减少计算量CASE WHEN针对每个用户提取对应得分,MAX是利用表的唯一约束(每个ID对每个用户仅一条记录)确保取到正确值HAVING子句确保分组后的ID同时存在两个用户的打分,即共同ID
内容的提问来源于stack exchange,提问作者zack komo
相关产品推荐
相关产品推荐

