在mysql中,通过对json列执行连接从两个表中获取数据时出现问题

cigdeys3  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(333)

我有两个表users和usergroups,它们之间没有硬关系。users表包含一个usergroup列,该列以json格式保存usergroups表中的多个usergroup\u id,usergroups表包含id和usergroup\u title列。现在的需求是通过一个查询获得所有用户的列表,该查询应该包含用户数据,usergroup\u title来自usergroups表,对应于json值。
我已经尝试了下面的查询,但是我得到了一个错误,json\ U contains函数不存在。代码如下:

SELECT 
u.user_id,
g.id,
g.usergroup_title
FROM user u
LEFT JOIN usergroups g on JSON_CONTAINS(u.usergroup_id, CAST(g.id as JSON), '$')

我得到一个错误,json\ U contains函数没有。我想要以下格式的数据:

array("user_id" => 1, "usergroup" => ["admin", "customer", "seller"])
bsxbgnwa

bsxbgnwa1#

既然我们知道处理多对一关系是一种可怕的方式,那就让我们继续往下说吧:

SELECT 
u.user_id,
g.id,
g.usergroup_title
FROM user u
LEFT JOIN usergroups g on u.usergroup_id LIKE CONCAT('%"',g.id,'"%')

如果您的id在json中被视为字符串,那么它应该可以做到这一点,否则您需要替换 '%"' 以及 '"%' 和类似的东西分开 '%:' 以及 ',%' .

相关问题