首页 >数据库 >mysql教程 >如何根据 JSON 字段中的数据连接 MySQL 表?

如何根据 JSON 字段中的数据连接 MySQL 表?

Barbara Streisand
Barbara Streisand原创
2024-10-30 15:04:03515浏览

How can you join MySQL tables based on data within a JSON field?

使用 MySQL JSON 字段进行复杂表连接

问题:

在 MySQL 数据库中schema,一个 JSON 字段存储 ID 列表。目标是对此 JSON 字段执行操作,并使用 SQL 查询中的结果将用户表与用户组表连接起来。

示例场景:

考虑下表:

CREATE TABLE user (
    user_id INT,
    user_name VARCHAR(50),
    user_groups JSON
);

CREATE TABLE user_group (
    user_group_id INT,
    group_name VARCHAR(50)
);

具有以下数据:

INSERT INTO user_group (user_group_id, group_name) VALUES (1, 'Group A');
INSERT INTO user_group (user_group_id, group_name) VALUES (2, 'Group B');
INSERT INTO user_group (user_group_id, group_name) VALUES (3, 'Group C');

INSERT INTO user (user_id, user_name, user_groups) VALUES (101, 'John', '[1,3]');

期望结果:

期望结果是一个查询检索以下数据:

user_id | user_name | user_group_id | group_name|
-------------------------------------------------
101     | John      | 1             | Group A
101     | John      | 3             | Group C

解决方案:

解决方案涉及使用 JSON_CONTAINS 函数检查用户的 JSON 字段中是否存在用户组 ID

<code class="sql">SELECT 
       u.user_id, 
       u.user_name, 
       g.user_group_id,
       g.group_name
   FROM user u
   LEFT JOIN user_group g on JSON_CONTAINS(u.user_groups, CAST(g.user_group_id as JSON), '$')</code>

注意:

JSON_CONTAINS 函数中的 $ 运算符表示 JSON 文档的根。

以上是如何根据 JSON 字段中的数据连接 MySQL 表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn