SQLite多连接复杂查询:获取指定人员ID、状态及子女数量
SQLite查询解决方案
这里有一个完全符合你需求的SQLite查询语句,针对给定的表结构和样例数据可以直接运行:
SELECT p.PERSON_ID, s.STATUS, (SELECT COUNT(*) FROM PEOPLE child WHERE child.GUARDIAN_ID = p.PERSON_ID) AS CHILD_COUNT FROM PEOPLE p JOIN STATUS s ON p.PERSON_ID = s.PERSON_ID WHERE p.FIRST_NAME = 'George';
结果说明(基于你的样例数据)
执行后会得到如下结果:
| PERSON_ID | STATUS | CHILD_COUNT |
|---|---|---|
| 2345 | DISPATCHED | 2 |
查询拆解
- 主表关联:通过
JOIN STATUS s ON p.PERSON_ID = s.PERSON_ID把PEOPLE表和STATUS表关联起来,这样能同时获取George的ID和对应的状态信息。给表设置别名p和s是为了让代码更简洁易读。 - 子女数量统计:用一个子查询
(SELECT COUNT(*) FROM PEOPLE child WHERE child.GUARDIAN_ID = p.PERSON_ID)统计所有GUARDIAN_ID等于George的PERSON_ID的记录数,也就是他的子女总数,并用AS CHILD_COUNT给这个统计结果起一个清晰的列名。 - 过滤目标人员:
WHERE p.FIRST_NAME = 'George'确保我们只查询名为George的人员数据,不会返回其他无关记录。
内容的提问来源于stack exchange,提问作者pnizzle
相关产品推荐
相关产品推荐

