SQLite如何查询分组后有效颜色计数大于1的ID
解决方案
你原先的SQL写法存在两个核心问题:
- 直接在WHERE子句中判断
Colour > 1,既不能实现统计每个ID对应颜色数量的需求,也没有完成None值的过滤 - 聚合类的筛选条件需要配合
GROUP BY分组和HAVING子句实现,不能直接放在WHERE中
正确的实现逻辑如下:
- 先用
WHERE子句过滤掉所有Colour为None的无效记录 - 按ID字段对数据分组
- 用
COUNT()函数统计每个分组下的有效颜色条数 - 用
HAVING子句筛选出统计结果大于1的ID
对应的Python代码修改为:
cur.execute('SELECT ID FROM your_table_name WHERE Colour IS NOT NULL GROUP BY ID HAVING COUNT(Colour) > 1') rows = cur.fetchall() for row in rows: print(row)
注意将代码中的
your_table_name替换为你实际的表名
测试说明:针对你给出的示例数据,执行上述SQL后会正确返回0000和2222两个ID,符合需求。
内容的提问来源于stack exchange,提问作者Jeff
相关产品推荐
相关产品推荐

