0

在对存储在 Mysql 数据库中的 JSON 数据执行一些选择 JSON_EXTRACT 请求时,我遇到了一些麻烦。

每一行都没有完全相同的 JSON 数据结构。当我使用 JSON_EXTRACT 选择匹配条件的字段时,一切顺利。

问题是在尝试选择与条件不匹配的字段时。仅返回确实具有键的字段(尽管当然不匹配数据)。

你会在这里找到一个重现这种行为的小提琴。

我认为这是有意的,但我想知道是否有一种糖变通方法可以在不添加其他条件的情况下导致小提琴的第四个请求结果(在实际情况下,请求是基于特定的 API 语法以编程方式生成的,并且添加上下文条件将会很痛苦)?

4

1 回答 1

1

解决问题的一种方法是选择与表达式匹配的 id,然后在INorNOT IN表达式中使用它们,具体取决于您是要检查匹配还是不匹配,例如

SELECT *
FROM `test`
WHERE id IN (SELECT id
             FROM `test` 
             WHERE data->>'$.test' = 'passed');

或者

SELECT *
FROM `test`
WHERE id NOT IN (SELECT id
                 FROM `test` 
                 WHERE data->>'$.test' = 'passed');

查询中的唯一区别是添加了NOT否定匹配的单词。

演示

于 2019-01-18T08:35:35.407 回答