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

MySQL JSON字段过滤查询:如何修改SQL排除home与away中id为11的数据

问题修正说明

  1. 原SQL存在逻辑运算符优先级错误:AND优先级高于OR,原写法实际执行逻辑为 (status = '3' AND home.id=10) OR (away.id=10),会把status不为3、仅away.id=10的条目也纳入结果,不符合基础筛选要求。
  2. 新增过滤规则:需要排除home.id=11 或 away.id=11的所有条目。

修改后SQL语句

SELECT 
    * 
FROM 
    table_name 
WHERE 
    status = '3' 
    -- 筛选home或away中id为10的条目,加括号保证逻辑优先级正确
    AND (JSON_EXTRACT(home, '$.id') = 10 OR JSON_EXTRACT(away, '$.id') = 10)
    -- 过滤掉home、away字段中id为11的条目
    AND JSON_EXTRACT(home, '$.id') != 11
    AND JSON_EXTRACT(away, '$.id') != 11
ORDER BY 
    id DESC 
    LIMIT 10

如果使用MySQL 5.7及以上版本,还可以用简化的JSON访问语法优化可读性:

SELECT 
    * 
FROM 
    table_name 
WHERE 
    status = '3' 
    AND (home->'$.id' = 10 OR away->'$.id' = 10)
    AND home->'$.id' != 11
    AND away->'$.id' != 11
ORDER BY 
    id DESC 
    LIMIT 10

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:54:04