You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL查询WHERE条件不生效,如何调整以获取tbl_property表的正确数据

问题原因

SQL 逻辑运算符中 AND 的优先级高于 OR,你写的原始语句实际执行的判断逻辑等价于:

SELECT * 
FROM `tbl_property` 
WHERE 
    `sublocality` LIKE '%dwarka%' 
    OR `sublocality` LIKE '%delhi%' 
    OR `property_type` LIKE '%1%' 
    OR (
        `property_type` LIKE '%2%' 
        AND `status` = 1 
        AND `property_category` = 1
    )

也就是说只要sublocality匹配dwarka/delhi、或者property_type匹配1的记录,不管status和property_category的值是什么,都会被查询出来,这就是你筛选条件不生效的核心原因。

修正方案

把所有OR连接的匹配条件用括号包裹为一个整体,再和后面的两个固定筛选条件做逻辑与即可:

SELECT * 
FROM `tbl_property` 
WHERE 
    (
        `sublocality` LIKE '%dwarka%' 
        OR `sublocality` LIKE '%delhi%' 
        OR `property_type` LIKE '%1%' 
        OR `property_type` LIKE '%2%'
    )
    AND `status` = 1 
    AND `property_category` = 1

可选优化建议

  • 如果property_type是数值类型的字段,不需要用LIKE模糊匹配,直接用property_type IN (1,2)即可,查询效率更高,逻辑也更清晰
  • 如果sublocality的模糊匹配使用频率很高,可以考虑给该字段加前缀索引或者使用全文索引,优化大表下的查询性能

内容的提问来源于stack exchange,提问作者Ricky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:45:04