求跨Table1、Table2按student_id统计指定Document_no的文档数SQL语句
SQL查询:合并两表统计指定文档总数
解决方案
通过合并两张表的目标数据,筛选指定文档编号后分组统计,SQL语句如下:
SELECT student_id, COUNT(*) AS count FROM ( -- 合并两张表的学生ID与文档编号数据 SELECT student_id, Document_no FROM Table1 UNION ALL SELECT student_id, Document_no FROM Table2 ) AS combined_data -- 仅保留文档编号为1、2、3的记录 WHERE Document_no IN (1, 2, 3) -- 按学生ID分组统计总数 GROUP BY student_id -- 可选:按学生ID排序结果 ORDER BY student_id;
说明
- 用
UNION ALL而非UNION:如果同一学生的同一份文档在两张表中都存在,UNION ALL会保留所有记录并纳入统计,符合真实的文档数量统计需求;若用UNION会自动去重,可能导致统计结果不准确。 WHERE子句放在外层:先合并数据再筛选,逻辑更清晰,也能确保所有符合条件的记录都被统计。COUNT(*)用于统计分组内的所有记录数,直接得到每个学生的符合条件的文档总数。
内容的提问来源于stack exchange,提问作者Rio
相关产品推荐
相关产品推荐

