Mysql 选择在where子句中使用的多个字段
我有一个MySQL查询,用于显示某些事件。事件类型和词组将根据用户在表单中选择的内容而变化。 下面是根据网页上的表单添加到查询中的内容 事件类型='54'和词组='SP' 完整的查询是Mysql 选择在where子句中使用的多个字段,mysql,where-clause,where-in,Mysql,Where Clause,Where In,我有一个MySQL查询,用于显示某些事件。事件类型和词组将根据用户在表单中选择的内容而变化。 下面是根据网页上的表单添加到查询中的内容 事件类型='54'和词组='SP' 完整的查询是 select tevent.event_name, tevent.event_type, min(e_dates.event_date) as eventdate, tevent.status, tevent.etype from (tevent LEFT JOIN event_dates o
select tevent.event_name, tevent.event_type, min(e_dates.event_date) as eventdate,
tevent.status, tevent.etype
from (tevent LEFT JOIN event_dates on tevent.eventid=event_dates.eventid)
Where status <> 'delete'
AND YEAR(e_dates.event_date) >= YEAR( CURDATE( ) ) and event_type = '54' and etype = 'SP')
group by tevent.eventid
order by (case when tevent.status = 'closed' and e_dates.event_date >= curdate() then 0 else 1 end),
(case when find_in_set(`status`, 'open,pending,approved') then 0 else 1 end),
e_dates.event_date asc, tevent.eventid ASC
选择tevent.event\u名称、tevent.event\u类型、min(e\u dates.event\u date)作为eventdate,
tevent.status,tevent.etype
from(tevent.eventid=event\u dates.eventid上的tevent左连接事件\u日期)
其中状态为“删除”
年份(e_dates.event_date)>=YEAR(CURDATE()),事件类型='54'和etype='SP')
按tevent.eventid分组
订单依据(当tevent.status='closed'且e_dates.event_date>=curdate()时,则为0,否则为1结束),
(当在_集合中找到_(`status`、`open、pending、approved')时,则为0,否则为1结束),
e_dates.event_date asc,tevent.eventid asc
这完全符合我的需要。我显示了属于特定事件类型和事件类别的所有事件
但是,我希望所有查询都包含以下语句
((event_type='54'和etype='SM')或(event_type='50'和
事件(预处理='2'))
上述声明会将研讨会添加到所有活动日历中,但也会根据人员的选择显示每个特定的活动类型。我想您的WHERE子句可能如下所示
WHERE status <> 'delete'
AND YEAR(e_dates.event_date) >= YEAR(CURDATE())
AND (
event_type NOT IN ('50','54')
OR event_type IS NULL
OR (event_type = '54' AND etype IN ('SP','SM'))
OR (event_type = '50' AND event_prelim = '2')
)
其中状态为“删除”
年份(e_dates.event_date)>=年份(CURDATE())
及(
事件类型不在('50'、'54')
或事件类型为空
或者(event_type='54'和中的词组('SP','SM'))
或(事件类型='50'和事件预处理='2')
)
和在OR之前进行评估。因此,在标准中同时使用AND和OR时,插入括号很重要。您的问题是什么?为什么不将其添加到WHERE子句中呢?如果我将其添加到WHERE子句中,它将显示为空白。是的,我知道我确实需要重做编码和工作,但与此同时。