写数据库查询语句的时候,如果有两个where条件以or的关系并行,要怎么写

2021-08-24 14:39:06
ggzy
  • 访问次数: 2
  • 注册日期: 2021-08-24
  • 最后登录: 2021-08-24
  • 我的积分: 58
  • 门派等级: 无门派
SELECT *
FROM zt_TASK
WHERE (assignedTo = 'admin'
OR mailto LIKE "%,admin%")
AND deleted = "0"

AND zt_TASK.status NOT IN ('closed',  'cancel')


沙发
2021-08-24 14:45:37
于涛
  • 访问次数: 1225
  • 注册日期: 2020-08-10
  • 最后登录: 2024-04-18
  • 我的积分: 15422
  • 门派等级: 释迦 等级5 菩萨


您好,您这样查询看下呢

SELECT *

FROM zt_TASK

WHERE assignedTo = 'admin'

OR mailto LIKE "%,admin%"

AND deleted = "0"

AND zt_TASK.status NOT IN ('closed',  'cancel')

板凳
2021-08-24 15:22:40 回复#1
ggzy
  • 访问次数: 2
  • 注册日期: 2021-08-24
  • 最后登录: 2021-08-24
  • 我的积分: 58
  • 门派等级: 无门派

我的意思可能没表达清楚,我想要在代码中实现我上面写的sql语句

->where('assignedTo')->eq($this->app->user->account)
        ->orwhere('mailto')->like("%,{$this->app->user->account}%")
        ->andWhere('status')->notIN('cancel, closed')
        ->andWhere('deleted')->eq(0)

现在这样写,查出来的数据会少一条

#3
2021-08-24 15:23:33 回复#1
ggzy
  • 访问次数: 2
  • 注册日期: 2021-08-24
  • 最后登录: 2021-08-24
  • 我的积分: 58
  • 门派等级: 无门派
您这样的写法,在数据库里查询也是会少一条记录的
原帖由 于涛 于 2021-08-24 14:45:37 发表


您好,您这样查询看下呢

SELECT *

FROM zt_TASK

WHERE assignedTo = 'admin'

OR mailto LIKE "%,admin%"

AND deleted = "0"

AND zt_TASK.status NOT IN ('closed',  'cancel')

#4
2021-08-24 17:06:54
石洋洋
  • 访问次数: 6461
  • 注册日期: 2011-04-06
  • 最后登录: 2024-04-19
  • 我的积分: 96502
  • 门派等级: 幽灵 等级6 修罗

2种方案:

方案一:

$this->dao->query($sql)->fetch();用于查询数据
$this->dao->exec($sql);用于更新数据

方案二:

        ->where('status')->notIN('cancel, closed')

        ->andWhere('assignedTo',true)->eq($this->app->user->account)
        ->orwhere('mailto')->like("%,{$this->app->user->account}%")

        ->markRight(1);

        ->andWhere('deleted')->eq(0)

1/1 1