【发布时间】:2021-03-17 11:09:53
【问题描述】:
我正在使用 mariaDB 10.3,我有一个表:
CREATE TABLE user(id INT NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, parameters longtext, PRIMARY KEY(id));
有行:
INSERT INTO user VALUES (1, 'name1', '{"number": 1, "text": "some text"}'), (2, 'name2', '{"number": 2, "text": "some more text"}');
我正在尝试编写将表返回为JSON 对象的查询。
到目前为止我有
SELECT CONCAT(
'[',
GROUP_CONCAT(JSON_OBJECT('id',id,'name',name,'parameters', parameters)),
']'
)
FROM user;
但这会返回:
[
{"id": 1,
"name": "name1",
"parameters": "{\"number\": 1, \"text\": \"some text\"}"
},
{
"id": 2,
"name": "name2",
"parameters": "{\"number\": 2, \"text\": \"some more text\"}"
}
]
这不是正确的 JSON。我应该更改什么才能正确格式化parameters?
我想得到的是:
[
{
"id": 1,
"name": "name1",
"parameters": {
"number": 1,
"text": "some text"
}
},
{
"id": 2,
"name": "name2",
"parameters": {
"number": 2,
"text": "some more text"
}
}
]
谢谢
【问题讨论】:
-
(1) 如果您只有 1 行,您希望
GROUP_CONCAT完成什么? (2) 请在您的问题中添加所需的结果。 (使用Edit)。 -
你是对的,为简单起见,我只展示了 1 行,但要使这个问题有意义,最少 2 行。我还添加了想要的结果。
-
好的。我是否正确理解转义括号 (
\") 是唯一将您与成功区分开来的东西?还是我错过了什么? -
并在参数条目的开头和末尾附加引号(“)。
标签: sql json mariadb mariadb-10.3