mysql left join 空值_MySQL LEFT JOIN NULL值

这个问题更多的是2012年3月回复的问题。由于这是4个月后,我提出了一个新问题。参考:MySQL LEFT JOIN - Values can be NULL

我的SQL语句如下所示:

SELECT cs.case_id, cs.child_firstname, gu.*

FROM tblcases AS cs

LEFT JOIN tblguardians AS gu

ON cs.case_id = gu.case_id AND gu.firstname LIKE '%Craig%'

WHERE cs.child_firstname LIKE '%Sally%'这工作正常:

如果两个值均已设置(按上述示例)。

如果设置了cs.child_firstname并且gu.firstname只是通配符

但是,如果cs.child_firstname只是通配符,并且设置了gu.firstname,那么将返回数据库中的所有行,包括NULL值 - 理想情况下,我不想使用NULL值。

此查询是否可以重写为执行所有操作,或者是否需要有多个查询?

更新

下面的字段是我的表单中的字段,全部使用$ _POST传递并使用PHP进行处理。我希望这给出了一些数据来自何处的指示以及它与数据库表的关系。子元素们的领域在坦布尔人的tblcases和监护人领域。

子元素名字

子元素姓氏

小孩出生日期

守护者名字

监护人姓氏

监护人电话

卫报邮编

更新2

SQL查询现在如下所示:

SELECT

DISTINCT(cs.case_id) AS case_id, CONCAT(cs.child_firstname, ' ', child_surname) AS childname, DATE_FORMAT(child_dob, '%d/%m/%Y') AS child_dob, DATE_FORMAT(created, '%d/%m/%Y') AS created, gu.firstname, gu.surname

FROM

tblcases AS cs

LEFT JOIN tblguardians AS gu

ON cs.case_id = gu.case_id

AND gu.firstname LIKE '%$_POST[parent_firstname]%'

AND gu.surname LIKE '%$_POST[parent_lastname]%'

WHERE

cs.child_firstname LIKE '%$_POST[child_firstname]%'

AND cs.child_surname LIKE '%$_POST[child_surname]%'

AND ('$_POST[child_firstname]' != '' OR gu.firstname IS NOT NULL)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值