MySQL选择返回为JSON

时间:2017-04-04 10:50:55

标签: mysql json

我读到了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"
    }
  ]
}

1 个答案:

答案 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函数中连接的内容显然取决于表的列名。