下面是一个示例表:
id, json_txt
1, [5,18,23,50]
2, []
3, [4,5,12,18,22]
4, [18,22,50]
5, [3,12,70]
我想从第3行得到匹配数的和 json_txt
在另一排。
以下是每行的计数结果:
1 - 2 matches (5 and 18)
2 - 0 matches
3 - 5 matches (it's the row being searched for)
4 - 2 matches (18 and 22)
5 - 1 match (12)
这是我所能做到的:
SELECT * FROM my_table WHERE JSON_CONTAINS(json_txt, '[4,5,12,18,22]', '$')
但这只是找到匹配的行,而不是计算每行中的匹配数:/
1条答案
按热度按时间2w3rbyxf1#
首先,
information_schema.tables
用于行生成,以便确定索引值作为的第二个参数JSON_EXTRACT()
功能与ROW_NUMBER()
适用于db版本10.2+的窗口功能,以及JSON_LENGTH()
函数用于确定最大长度的数组,以便将每个数组中的每个元素与id值等于3的数组进行比较:演示