Mysql 选择在where子句中使用的多个字段

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

我有一个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 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子句中,它将显示为空白。是的,我知道我确实需要重做编码和工作,但与此同时。