是否可以在 mysql where 子句中使用 json 列表中的多个值?

Is it posible to use multiple values from a json list in a mysql where clause?

我在这个 table 中填充了值,并且它们都在 JSON 中构建。

PersonID ValueID Value
1 1 {"Values":[{"ID":1,"Value":true},{"ID":2,"Value":true}]}
1 2 {"Values":[{"ID":2,"Value":false},{"ID":3,"Value":true}]}

所以我想知道是否有任何方法可以同时查询 ID 和值,所以我等可以搜索 "ID":1 和 "Value":true 然后它return 第一行。

我试过使用 JSON_CONTAINS_PATH、JSON_CONTAINS、JSON_SEARCH,但 none 考虑到我想在列表中搜索,我有尝试使用 $.Values[0].ID 和 returns id 但我需要在 where 中循环所有这些,否则我只会搜索 JSON 数组的第一个索引.

谁能指出我正确的方向?

SELECT
   PersonID,
   ValueID,
   x1.* 
FROM table1
cross join JSON_TABLE(table1.Value, 
   '$.Values[*]' COLUMNS( ID INTEGER PATH '$.ID',
                          Value INTEGER PATH '$.Value'
                        )) as x1

输出:

PersonID ValueID ID Value
1 1 1 1
1 1 2 1
1 2 2 0
1 2 3 1

参见:DBFIDDLE

SELECT *
FROM table1
WHERE table1.value->'$.Values[0]' = JSON_OBJECT('ID',1,'Value',true)