【发布时间】:2019-02-06 13:10:44
【问题描述】:
所以我制作了这个系统来存储自定义对象以及我正在开发的应用程序的自定义字段。首先我有 object_def 我保存对象定义:
id | name | fields
------------------------------------------------------------
101 | Group 1 | [{"name": "Title", "id": "AbCdE123"}, ...]
102 | Group 2 | [{"name": "Name", "id": "FgHiJ456"}, ...]
所以我们有 ID (INT)、名称 (VARCHAR) 和字段 (LONGTEXT)。在字段中是这样的对象字段:{id: string, type: string, name: string}[]。
现在在对象表中,我有这个:
id | object_def_id | object_values
------------------------------------------------------------
235 | 101 | {"AbCdE123": "The Object", ... }
236 | 102 | {"FgHiJ456": "John Perez", ... }
其中 object_values 也是一个 LONGTEXT。使用该系统,我可以使用 JSON.parse() 在我的应用程序中的表格上显示对象。
现在我了解到 MySQL 中有一个 JSON 类型,我希望它可以使用它来执行查询和其他操作(我对此真的很陌生)。
我已将 LONGTEXT 更改为 JSON,现在我想做一个 SELECT 来显示如下结果:
#Select objects in group 1:
id | group | Title | ... | other_custom_field
-------------------------------------------------------
235 | Group 1 | The Object | ... | other_custom_value
#Select objects in group 2:
id | group | Name | ... | other_custom_field
-------------------------------------------------------
236 | Group 2 | John Perez | ... | other_custom_value
Id,然后是组名(我可以使用 INNER JOIN 完成此操作),然后是具有相应值的所有自定义字段。
这可能吗?我怎样才能做到这一点(希望不改变我的数据库结构)?我正在学习 MySQL、SQL 和数据库,所以我非常感谢你的帮助。谢谢!
【问题讨论】:
-
请问你用的是什么版本的MySQL
-
我使用的是 5.7.25