如何查询event_service全量记录并关联appointment_feedback表,无匹配则显示Null
解决方案:用LEFT JOIN实现保留左表全量记录的关联查询
你需要的是左连接(LEFT JOIN),这种连接方式会确保event_service(左表)的所有记录都被返回:当appointment_feedback(右表)存在匹配的记录时,会显示对应的fd_comment值;没有匹配项的话,该字段就显示NULL,完美契合你的需求。
正确的SQL查询语句
SELECT es.evsr_id, es.evsr_ev_id, es.staff_id, af.fd_comment FROM event_service es LEFT JOIN appointment_feedback af ON es.evsr_ev_id = af.fd_app_id;
关键说明
- LEFT JOIN的作用:和内连接(INNER JOIN)不同,它不会过滤掉左表中没有匹配右表的记录,这正是你需要保留
event_service所有2条记录的核心原因 - 关联条件:
es.evsr_ev_id = af.fd_app_id是两张表的关联依据,从你的数据来看,evsr_ev_id和fd_app_id的值都是101,是正确的关联字段 - 表别名:用
es指代event_service、af指代appointment_feedback,让SQL代码更简洁易读
执行这条语句后,就能得到你想要的结果:
| evsr_ev_id | staff_id | fd_comment |
|---|---|---|
| 101 | 1 | test |
| 101 | 2 | null |
如果你之前用的是INNER JOIN,那只会返回两张表都匹配的那条记录(也就是第一条),这就是为什么你没得到预期结果的问题所在。
内容的提问来源于stack exchange,提问作者varun joshi
相关产品推荐
相关产品推荐

