You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何关联指定问卷数据至学生主表且保留未受访学生记录?

解决SQL关联问卷表时保留未受访学生且避免冗余的问题

问题分析

你的核心矛盾在于:用LEFT JOIN后加WHERE子句会过滤掉未参与目标问卷的学生(这类行的t2字段为NULL,WHERE条件会直接排除);但去掉WHERE又会引入其他问卷问题的冗余数据,导致数据集膨胀。

解决方案

把针对Table2的筛选条件(目标问题、可选的日期限制)移到LEFT JOIN的ON子句中,而非放在WHERE里。这样既能保留Table1的所有学生行,又只会关联符合条件的问卷记录,彻底避免冗余。

最终SQL语句

SELECT 
    t1.*,
    t2.Response AS GPA_3_0_Response
FROM Table_1 t1
LEFT JOIN Table_2 t2
    ON t1.ID = t2.ID
    AND t2.Question = 'Did you receive a GPA of 3.0 or higher?'
    -- 可选:如果需要严格匹配问卷发放时间范围,添加以下条件
    AND t1.Date >= '2023-04-01'

原理说明

  • LEFT JOIN的ON子句是关联时的匹配规则:只有当Table2的记录同时满足ID匹配、问题为目标问题(以及可选的日期条件)时,才会和Table1的行关联。不满足条件的Table1行依然会被保留,对应的t2字段值为NULL,正好符合2023年4月1日前学生的字段设为NULL的需求。
  • 原来的WHERE子句是关联后的过滤规则:会把所有t2.Question为NULL的行(也就是未受访的学生)直接排除,这就是你丢失学生1和2的原因。
  • 给Response起别名(GPA_3_0_Response)可以让结果集的字段含义更清晰,同时不需要保留t2.Question字段(因为我们只筛选这一个问题,该字段值固定),进一步减少冗余。

内容的提问来源于stack exchange,提问作者learning to code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:42:44