【发布时间】:2020-03-13 04:32:29
【问题描述】:
以下带有左连接的查询返回在最终左连接上没有匹配的记录,即评估列为空,尽管我有带有 IS NOT NULL 的查询。
应如何更改查询以获取匹配的记录?
基本上我想根据查找表中的相关评估返回unit_outcome记录GROUPED。
DB Fiddle for LEFT JOIN 显示用于评估的空记录
SELECT *
FROM unit
left JOIN unit_unit_outcome_lookup
ON unit_unit_outcome_lookup.unit_fk = unit.unit_pk
left JOIN unit_outcome
ON unit_outcome.unit_outcome_pk = unit_unit_outcome_lookup.unit_outcome_fk
left JOIN unit_outcome_assessment_lookup
ON unit_outcome_assessment_lookup.unit_outcome_fk = unit_outcome.unit_outcome_pk IS NOT NULL
left JOIN assessment
ON assessment.assessment_pk = unit_outcome_assessment_lookup.assessment_fk IS NOT NULL
AND unit.unit_pk ='1'
DB Fiddle for INNER JOIN 没有空记录 - 如何按评估对 unit_outcomes 进行分组?
【问题讨论】:
-
ONassessment.assessment_pk = unit_outcome_assessment_lookup.assessment_fk IS NOT NULL你认为执行了什么操作:
ON (assessment.assessment_pk = unit_outcome_assessment_lookup.assessment_fk) IS NOT NULL或ON assessment.assessment_pk = (unit_outcome_assessment_lookup.assessment_fk IS NOT NULL)? -
你需要添加where条件,你检查的地方不为空
-
@Akina 不返回评估表中没有相关评估的结果
-
o_O 使用 INNER JOIN 而不是 LEFT...
-
@Mangesh Auti 你能告诉我小提琴的叉子吗?
标签: mysql