小编典典

MySQL LEFT JOIN-值可以为NULL

sql

我正在修改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%'

只要“ tblguardians”表中有一个条目,该查询就可以正常工作,但是如果没有记录,则LEFT JOIN返回NULL-
因此,当我遍历PHP中的结果时,不会返回该条目。

有没有一种方法可以从“ tblcases”返回字段,而无论“
tblguardians”是否有关联的结果?我想我已经读了太多的Google页面,以获取更多信息!


阅读 192

收藏
2021-04-07

共1个答案

小编典典

在您的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%'
2021-04-07