Mysql查询条件如何写?

现有表A有如下字段:
c
d
e
d的值默认为空,查询一个结果集d字段为可选项,如果d不为空(d为空的时候不作为查询条件),且e也不为空则不返回这一行结果。请问可以使用查询语句实现吗

阅读 2.5k
3 个回答
where 1=1 and (d is null or d is not null and e is null)

sql不能动态拼接吗

  1. 用mybatis 和ibatis的话可以了解一下<isNotEmpty>的标签,可以解决d字段的动态拼接问题
  2. e不为空不返回是不是可以理解为只返回e为null的结果,那就可以加条件 and e is null

看看我理解的是否正确, 分两种情况:

  1. d不为空,那么e也要不为空: d != '' and e != ''
  2. 如果d为空,那么d不作为where条件,只需判断e不为空, 所以这里如果d不为空,那就走到前一种情况了,所以这里也可以变成: d = '' and e != ''

混合下那么其实跟d为不为空没关系,所以条件只有e != '',由于是不返回,那么条件就变成了:e = ''

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题