查询的结果
SELECT CFV.VALUE, CF.NAME
FROM CONTACTFIELD CF LEFT JOIN
CONTACTFIELDVALUE CFV
ON CF.ID = CFV.FIELDID AND CF.ORID = CFV.ORID
WHERE CFV.CONTACTID = 81 AND CFV.ORID = 976
是
Value Name
22 fld1
33 fld2
44 fld3
CONTACTFIELD有5行
飞行高度1
飞行高度2
fld3层
fld4型
第五层
因此,如果值不存在,我希望查询返回空:
Value Name
22 fld1
33 fld2
44 fld3
null fld4
null fld5
我该怎么办?谢谢您!
最佳答案
使用LEFT JOIN
时,第二个表上的条件需要进入ON
子句:
SELECT CFV.VALUE, CF.NAME
FROM CONTACTFIELD CF LEFT JOIN
CONTACTFIELDVALUE CFV
ON CF.ID = CFV.FIELDID AND CF.ORID = CFV.ORID AND
CFV.CONTACTID = 81 AND CFV.ORID = 976 ;
如果它们进入
WHERE
子句,那么它将把LEFT JOIN
变成INNER JOIN
(因为NULL
值不符合条件)。第一个表上的条件应该放在
WHERE
子句中。