MariaDB查询EXISTS和BETWEEN

cbwuti44  于 6个月前  发布在  其他
关注(0)|答案(2)|浏览(55)

我想过滤距离在范围之间的事件
我使用10.6.15-MariaDB
DB结构类似于:

event_id, event_title, event_distances
1, event1, [{"order":0,"value":21}]
2, event2, [{"order":0,"value":8}]
3, event3, [{"order":0,"value":10}]
4, event4, [{"order":0,"value":5},{"order":1,"value":10},{"order":2,"value":21}]

字符串
我尝试查询:

SELECT events.event_title, event_distances 
FROM events 
WHERE 
EXISTS ( 
    SELECT 1 
    FROM JSON_TABLE(event_distances, '$[*]' COLUMNS (distance_value FLOAT PATH '$.value')) AS distances 
    WHERE distances.distance_value BETWEEN 9 AND 22
) 
ORDER BY events.event_id ASC;


但是我得到了奇怪的返回,值在0和22之间,我得到了所有的事件(这是正确的,但是例如值在20和22之间,没有行返回。
也许有人可以帮助我找到我的问题查询?

olmpazwi

olmpazwi1#

不幸的是,这是一个目前尚未修复的错误MDEV-30623

yzxexxkh

yzxexxkh2#

我已经使用JOIN解决了这个Bug

SELECT events.* FROM events JOIN JSON_TABLE(event_distances, '$[*]' COLUMNS (distance_value FLOAT PATH '$.value')) AS distances ON distances.distance_value BETWEEN $minDistance AND $maxDistance

字符串
现在我看不出有什么问题.

相关问题