1、表结构

CREATE TABLE `sys_user_group` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
  `member_user_ids` varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '[]' COMMENT '成员编号数组',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=116 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='用户组';

2、数据

INSERT INTO `zz_ybjh_dev`.`sys_user_group` (`id`, `member_user_ids`) VALUES (1, '[1,2,3,4,5]');
INSERT INTO `zz_ybjh_dev`.`sys_user_group` (`id`, `member_user_ids`) VALUES (2, '[2,3,4,5,6,10,30,100]');

3、SQL查询,将JSON数组转换为行进行查询

SELECT id,userid
FROM sys_user_group,
JSON_TABLE(member_user_ids, '$[*]' COLUMNS (userid INT PATH '$')) AS userid
where userid = 3

查询结果如下
id|userid|
--+------+
 1|     3|
 2|     3|

4、以一个json数组中的数值为一条,如果一个json数组中的一个值存在于多条记录中,则展示一条记录,将多条的ID进行一个数组组合出来查询,查询语句如下
 

SELECT group_concat( DISTINCT id ) AS groupids
FROM sys_user_group,
JSON_TABLE(member_user_ids, '$[*]' COLUMNS (userid INT PATH '$')) AS userid
where userid = 3
group by userid

groupids|
--------+
1,2     |

 

最后修改于 2023-03-21 16:40:54
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇