我正在修改一个MySQL语句但是在LEFT JOIN和空行时遇到了一些麻烦.目前我有:
SELECT cs.case_id, cs.child_firstname, gu.*
FROM tblcases AS cs
LEFT JOIN tblguardians AS gu
ON cs.case_id = gu.case_id
WHERE cs.child_firstname = '%craig%' AND gu.firstname LIKE '%sally%'
Run Code Online (Sandbox Code Playgroud)
只要"tblguardians"表中有条目,此查询就可以正常工作,但如果没有记录,则LEFT JOIN返回NULL - 因此,当我在PHP中迭代结果时,不会返回该条目.
有没有办法从"tblcases"返回字段,无论"tblguardians"是否有相关结果?我想我已经阅读了太多的Google页面,以获取更多信息!
ber*_*nie 10
在WHERE子句中的连接表上放置条件有效地使加入INNER JOIN.
为避免这样做,您必须将第二个条件添加到LEFT JOIN:
SELECT cs.case_id, cs.child_firstname, gu.*
FROM tblcases cs
LEFT JOIN tblguardians gu
ON cs.case_id = gu.case_id
AND gu.firstname LIKE '%sally%' /* <- this line was moved up from WHERE */
WHERE cs.child_firstname = '%craig%'
Run Code Online (Sandbox Code Playgroud)