Mysql 为什么sql忽略了我的句子?
我在为一家房地产公司做过滤器。它们有几个属性和过滤器,可以在客户提取时获取它们 我有一个问题,在各种或设置之后,Mysql忽略了这个或之后详细的句子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
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