查询结果
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行
FLD1 FLD2 fld3 fld4 fld5
所以如果值不存在,我希望我的查询返回null,例如:
Value Name
22 fld1
33 fld2
44 fld3
null fld4
null fld5
我该如何管理?谢谢!
答案 0 :(得分:3)
使用LEFT JOIN
时, second 表中的条件需要进入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
值不符合条件)。
first 表中的条件应该放在WHERE
子句中。
答案 1 :(得分:0)
我使用像这样的
的where子句获得解决方案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 WHERE CF.ORID = 976
谢谢戈登