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

MySQL中如何从JSON数组提取满足双条件的对象?

解决JSON数组中同对象多条件匹配的SQL查询问题

问题分析

你原有的SQL语句错误在于:分别提取数组中所有title和所有applies值进行独立判断,只要数组里存在目标title和存在true的applies就会返回记录,但这两个条件可能来自不同对象,不符合“同一对象同时满足两个条件”的需求。

正确实现方法

方法1:使用JSON_CONTAINS直接匹配完整对象

适合简单的精确匹配场景,直接检查JSON列中是否包含同时满足两个属性的对象:

SELECT col
FROM `table`
WHERE JSON_CONTAINS(col, '{"title": "CALCULATED", "applies": true}');

方法2:使用JSON_TABLE展开数组后过滤

适合复杂查询场景(如需要提取匹配对象、多条件组合等),将JSON数组转换为行数据后再筛选:

SELECT DISTINCT t.col
FROM `table` t
JOIN JSON_TABLE(
    t.col,
    '$[*]' COLUMNS(
        title VARCHAR(255) PATH '$.title',
        applies BOOLEAN PATH '$.applies'
    )
) jt
WHERE jt.title = "CALCULATED" AND jt.applies = true;

注:DISTINCT用于避免原表记录因匹配多个对象被重复返回。

方法3:使用JSON路径条件表达式(MySQL 8.0+支持)

通过JSON路径的筛选语法,直接判断数组中是否存在满足条件的元素:

SELECT col
FROM `table`
WHERE JSON_EXTRACT(col, '$[*] ? (@.title == "CALCULATED" && @.applies == true)') IS NOT NULL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:53:17