mysql-json在哪里

2lpgd968  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(283)

我有两张这样的table。但我在查询时遇到了麻烦。我想查询组中的成员等于can\u view\u group的所有post,can\u view\u group的列类型是json。
我只知道json_所包含的内容和中的where(列)可以帮助我完成这项工作,但我实际上无法让它工作。我怎样才能让它工作?
谢谢。
p、 我只想要普通的sql代码,因为当我将它应用到php代码或任何其他东西时,它应该是最简单的。

post
----------------------------------------
     post_id    |    can_view_group    |
----------------------------------------
        1       |   ["1","2","3"]      |
----------------------------------------

              member_group
----------------------------------------
    member_id   |       group_id       |
----------------------------------------
      123       |           1          |
----------------------------------------
      123       |           2          |
----------------------------------------
cnjp1d6j

cnjp1d6j1#

最简单的方法是使用多个嵌套 REPLACE 函数以获取逗号分隔的字符串和mysql的非规范化函数 FIND_IN_SET 它与逗号分隔的字符串一起工作。
查询

SELECT 
 *
FROM 
 post 
INNER JOIN
 member_group
ON
 FIND_IN_SET(member_group.group_id , REPLACE(REPLACE(REPLACE(post.can_view_group, '"', ''), '[', ''), ']', ''))

请参见演示http://sqlfiddle.com/#!9/37e997/5号
一个缺点是你永远不能用这种方法来使用索引。
最好的选择仍然是规范化,但这肯定需要更改应用程序。

相关问题