首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql 5.7中从json字段创建视图?

问在mysql 5.7中从json字段创建视图?
EN

Stack Overflow用户
提问于 2019-12-24 15:00:34
回答 1查看 886关注 0票数 0

我有一个带有json对象的字段,其结构如下:

代码语言:javascript
复制
{
"12edd9df-7aa3-5916-8e06-4f21dfcb5920": {"text": "value1", "deleted": true},
.... 
"23767bc4-2e30-5fca-8683-a04c06604e96": {"text": "value2", "deleted": true}
}

创建具有以下结构的视图的sql将是什么:

代码语言:javascript
复制
uuid                                 | text    | deleted
12edd9df-7aa3-5916-8e06-4f21dfcb5920 | value1  | true
...

约束条件是我使用MySQL5.7,不能创建过程。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-24 15:19:42

这里有个解决办法。您必须创建一个数字表才能工作。

代码语言:javascript
复制
CREATE TABLE n ( n INT PRIMARY KEY );
INSERT INTO n (n) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);

SELECT uuid, 
  JSON_EXTRACT(data, CONCAT('$.', uuid, '.text')) AS text, 
  JSON_EXTRACT(data, CONCAT('$.', uuid, '.deleted')) AS deleted
FROM (
  SELECT data, JSON_EXTRACT(JSON_KEYS(data), CONCAT('$[', n, ']')) AS uuid
  FROM mytable CROSS JOIN n
) AS t 
WHERE t.uuid IS NOT NULL;

您应该重新考虑对这些数据使用JSON。如果使用普通列,那么编写、调试和维护代码就容易多了。

你应该能够做到这一点:

代码语言:javascript
复制
SELECT uuid, text, deleted FROM mytable;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59470542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档