Mysql 为什么sql忽略了我的句子?

Mysql 为什么sql忽略了我的句子?,mysql,sql,Mysql,Sql,我在为一家房地产公司做过滤器。它们有几个属性和过滤器,可以在客户提取时获取它们 我有一个问题,在各种或设置之后,Mysql忽略了这个或之后详细的句子 SELECT * FROM props WHERE tipo = 'Casas_Casa' OR tipo = 'Departamentos_Duplex' OR tipo = 'Casas_Chalet' OR tipo = 'Casas Condominio' OR tipo = 'Countries y Barrios cerrados_Ca

我在为一家房地产公司做过滤器。它们有几个属性和过滤器,可以在客户提取时获取它们

我有一个问题,在各种或设置之后,Mysql忽略了这个或之后详细的句子

SELECT * FROM props WHERE tipo = 'Casas_Casa' OR tipo = 'Departamentos_Duplex' OR tipo = 'Casas_Chalet' OR tipo = 'Casas Condominio' OR tipo = 'Countries y Barrios cerrados_Casas' OR tipo = 'Countries y Barrios cerrados_Casas' OR tipo = 'PH' AND operacion = 'Alquiler' ORDER BY modif DESC

Mysql响应所有OR,但不识别'operacion'值,但对它们进行排序。

原因是,
的优先级高于
,因此条件的
和operacion='Alquiler'
部分仅与
'PH'
约束“绑定”

添加括号以强制执行正确的优先级:

SELECT *
FROM props
WHERE (tipo = 'Casas_Casa'
    OR tipo = 'Departamentos_Duplex'
    OR tipo = 'Casas_Chalet'
    OR tipo = 'Casas Condominio'
    OR tipo = 'Countries y Barrios cerrados_Casas'
    OR tipo = 'Countries y Barrios cerrados_Casas'
    OR tipo = 'PH')
AND operacion = 'Alquiler'
ORDER BY modif DESC
您还可以在表达式中使用
,以简化您的条件:

SELECT *
FROM props
WHERE tipo IN (
    'Casas_Casa'
,   'Departamentos_Duplex'
,   'Casas_Chalet'
,   'Casas Condominio'
,   'Countries y Barrios cerrados_Casas'
,   'Countries y Barrios cerrados_Casas'
,   'PH')
AND operacion = 'Alquiler'
ORDER BY modif DESC