我读到了MySQL 5.7的功能,我很奇怪是否可以以JSON格式返回select的给定行,或者将整个结果作为JSON格式返回。 我的数据看起来像普通的MySQL表:
| 13162 | 1 | 178803 | 093ea6a6-1077-4ea4-8a23-647e1d621b4a | 1485260588 | NULL |
| 13163 | 1 | 178803 | 6f34579b-4745-4ec3-babd-ab12aab5b99c | 1485260718 | NULL |
| 13165 | 1 | 178802 | 6f34579b-4745-4ec3-babd-ab12aab5b94c | 1485260705 | NULL |
| 13166 | 1 | 178022 | 6f34579b-4745-4ec3-babd-ab12a4b5b94c | 1485260645 | NULL |
| 13168 | 1 | 178022 | 6f34579b-4745-4ec3-babd-ab32a4b5b94c | 1485250645 | NULL |
| 13169 | 1 | 178022 | 6f34579b-4745-4ec3-babd-ab32a4b5b945 | 1475250645 | NULL |
| 13170 | 1 | 176022 | 6f34579b-4745-4ec3-babd-ab32a4b5b9e5 | 1465250645 | NULL |
| 13171 | 1 | 170022 | 6f34579b-4745-4ec3-babd-ab32a4a5b9e5 | 1425250645 | NULL |
| 13172 | 1 | 170022 | 6f34579b-4745-4ec3-babd-ab32a4aeb9e5 | 1426250645 | NULL |
| 13173 | 1 | 178804 | ea7bcd3b-0f04-4ace-ba9b-a26d297029f7 | 1486474710 | NULL |
| 13174 | 1 | 178804 | 39855021-ceb8-4178-a3cc-0ba11cf4490a | 1486475039 | NULL |
| 13175 | 1 | 2 | 6f34569b-4745-4ec3-b3bd-ab32a4aeb9e5 | NULL | NULL |
| 13176 | 1 | 2 | 39855021-ceb8-4578-a3cc-0ba11cf4490a | NULL | NULL |
| 13177 | 1 | 2 | 39852021-ceb8-4578-a3cc-0ba11cf4490a | NULL | NULL |
| 13178 | 1 | 2 | 39855421-ceb8-4578-a3cc-0ba11cf4490a | NULL | NULL |
我正在使用SELECT * FROM AccessToken;
查询。如何以JSON格式返回结果?我想在数据库级别上执行此操作,因为当我有大量数据时,编程级别太慢。我的意思是当我有200k用户使用Go花费8秒将它们转换为JSON。
例如结果:
{
[
{
"id": 1123,
"token": "asdjkasldkjlasdjf"
},
{
"id": 11323,
"token": "asdjkasdasdasldkjlasdjf"
}
]
}
答案 0 :(得分:1)
您的示例中的JSON无效,但这应该按照您的意愿进行
select concat('[',
group_concat(concat('{"id": "',
col1,
'", "token": "',
col2,
'"}'
) separator ','),
']')
from myTable
或者,如果你想获得一个对象而不是一个数组
select concat('{ "array": [',
group_concat(concat('{"id": "',
col1,
'", "token": "',
col2,
'"}'
) separator ','),
']}')
from myTable
您在内部concat
函数中连接的内容显然取决于表的列名。