使用 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中文网其他相关文章!