如何在MySQL中找到JSON数组字符串中元素的总出现次数?

如何在MySQL中找到JSON数组字符串中元素的总出现次数?,mysql,sql,json,performance,Mysql,Sql,Json,Performance,我试图使用SQL查找JSON数组列中元素的总频率。我确实想出了这个解决办法- rewards user_id [1, 2, 2] 1 [1, 2, 3] 1 ------------------- SELECT SUM(JSON_LENGTH(JSON_SEARCH(rewards, 'all', '2'))) AS total FROM tbl_answer WHERE user_id = 1 AND JSON_CONTAINS(rewa

我试图使用SQL查找JSON数组列中元素的总频率。我确实想出了这个解决办法-

 rewards    user_id
[1, 2, 2]      1
[1, 2, 3]      1
-------------------
SELECT SUM(JSON_LENGTH(JSON_SEARCH(rewards, 'all', '2'))) AS total
    FROM tbl_answer
    WHERE user_id = 1
      AND JSON_CONTAINS(rewards, '2') = 1;
结果

total
  3

但有些事告诉我还有更好的办法。如果您对此有任何建议,我将不胜感激。

一般来说,JSON应该保留给不需要包含在
WHERE
子句中的数据。所以,我建议重新考虑这个模式。是的,我最终制作了一个历史记录表并从中计数。