【发布时间】:2021-01-07 20:08:29
【问题描述】:
我有这两张桌子
表 1:“身份”
ID | identifier | report_ids
------------------------------
1 | TOP | ["1","2"]
“report_ids”是一个 VARCHAR 列,而不是 JSON
表 2:“报告”
ID | name
------------------------------
1 | Report Food
2 | Report Beverage
我必须从表 Identity 中选择并加入表 Reports 以通过他的 id 获取名称
总之,我希望通过查询得到这个结果:
Result:
ID | identifier | report_names
--------------------------------
1 | TOP | Report Food, Report Beverage
我如何使用 Query 做到这一点?
在此先感谢 :)
【问题讨论】:
-
什么是精确的 MySQL 版本? “report_ids”是一个 VARCHAR 列,而不是 JSON 没关系 - 如果它是有效的 JSON,那么它可以用作 JSON 函数中的参数。
-
我的版本是:10.4.10-MariaDB,我有varchar,因为并非所有时间这个值都是json,但我认为它可以转换为json no?
-
如果是这样,您必须显示“不是 JSON 的值”,并说明此类行需要什么输出。或者您可能只需要处理那些包含有效 JSON 值的行?
-
第二个,我只需要处理那些包含有效 JSON 值的行
-
Anycase - MariaDB 不实现 JSON_TABLE 函数或类似函数 - 因此您需要在迭代 CTE 中从 JSON 中提取单独的值,然后加入第二个表并使用 GROUP_CONCAT 重建您需要的单个 CSV 值。或者,您可以使用
"引用reports.id 并在identity.reprots_id 中搜索。
标签: mysql json join concatenation