我正在修改一个MySQL语句,但是左联和空行有一些问题。目前我有:

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%'

只要在“tblguardians”表中有一个条目,这个查询就可以正常工作,但是如果没有记录,左连接就会返回空值,因此当我在PHP中迭代结果时不会返回该条目。
无论“tblguardians”是否有关联结果,是否有方法从“tblcase”返回字段?我想我已经读了太多的谷歌网页,更多的信息,以吸收!

最佳答案

在WHERE子句中对已联接的表设置条件可以有效地使该联接成为内部联接。
要避免这样做,必须将第二个条件添加到左连接:

 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%'

关于mysql - MySQL LEFT JOIN-值可以为NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9607767/

10-10 03:33