【问题标题】:MySQL where between and multi or likeMySQL where and multi or like
【发布时间】:2020-09-26 18:52:19
【问题描述】:

这是示例查询:

select
    email,
    firstName,
    lastName
from
    users
where
    createdAt between '2020-04-01 00:00:00.0' and '2020-09-30 23:59:59.0'
    or email like '%bob%'
    or firstName like '%bob%'
    or lastName like '%bob%'
order by
    createdAt desc

我得到的结果例如:

remi10@martin10.com,remi10,martin10
remi6@martin6.com,Bobby,martin6
remi5@gmail.com,Bob,martin5
remi4@gmail.com,remi4,martin4

我正在努力...

remi6@martin6.com,Bobby,martin6
remi5@gmail.com,Bob,martin5

它应该返回在提供的日期/时间段之间具有%bob% 的记录。

【问题讨论】:

    标签: mysql sql date where-clause sql-like


    【解决方案1】:

    它应该返回在提供的日期/时间段之间具有 %bob% 的记录。

    在日期过滤器和多个类似条件之间需要and。我还建议使用半开间隔过滤来简化日期过滤器:

    where
        createdAt >= '2020-04-01' 
        and createdAt < '2020-10-01'
        and (
           email like '%bob%'
            or firstName like '%bob%'
            or lastName like '%bob%'
       )
    

    【讨论】:

    • 谢谢,是的,这正是我所需要的。
    【解决方案2】:

    首先,我建议简化数据逻辑。其次,你需要括号:

    where (createdAt >= '2020-04-01' and
           createdAt < '2020-10-01'
           ) and
           ( email like '%bob%' or
             firstName like '%bob%' or
             lastName like '%bob%' 
           )
    

    【讨论】:

      猜你喜欢
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多