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
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

