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

MySQL 8.x中AND与OR逻辑运算符的查询过滤问题

问题原因及解决方案
  • 逻辑优先级问题:MySQL中AND的执行优先级高于OR,你原来的SQL语句会被数据库解析为:

    SELECT * FROM db_catalogo.tb_foto 
    WHERE (db_catalogo.tb_foto.id_catalogo = '1' AND db_catalogo.tb_foto.tag LIKE '%c-119%') 
    OR db_catalogo.tb_foto.tag LIKE'%f-104%' 
    ORDER BY db_catalogo.tb_foto.id_catalogo, db_catalogo.tb_foto.posizione;
    

    这就导致只要tag包含f-104的记录(无论id_catalogo取值)都会被返回,这就是结果中出现目录9数据的原因。

  • 修正后的SQL语句:把两个LIKE匹配条件用括号包裹,确保id_catalogo='1'同时约束两个标签过滤规则:

    SELECT * FROM db_catalogo.tb_foto 
    WHERE db_catalogo.tb_foto.id_catalogo = '1' 
    AND (db_catalogo.tb_foto.tag LIKE '%c-119%' OR db_catalogo.tb_foto.tag LIKE '%f-104%') 
    ORDER BY db_catalogo.tb_foto.id_catalogo, db_catalogo.tb_foto.posizione;
    
  • 补充提示:由于tag是Blob类型,确保其存储的是文本格式内容,否则LIKE匹配可能出现异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:33:09