【发布时间】:2021-08-03 23:01:53
【问题描述】:
我有 2 张桌子,其中:
表 1:名称
| id | first_name | last_name |
|----|------------|-----------|
| 1 | John | Doe |
| 2 | Jane | Doe |
表 2:电话
| rec | id | type | number |
|-----|----|--------|--------------|
| 1 | 1 | Home | 123-123-1234 |
| 2 | 1 | Work | 234-234-2345 |
| 3 | 1 | Mobile | 345-345-3456 |
| 4 | 2 | Mobile | 456-456-4567 |
如果我运行以下查询:
SELECT name.*, phone.type, phone.number
FROM name, phone
WHERE name.id = phone.id
会产生如下结果:
| id | first_name | last_name | type | number |
|----|------------|-----------|--------|--------------|
| 1 | John | Doe | Home | 123-123-1234 |
| 1 | John | Doe | Work | 234-234-2345 |
| 1 | John | Doe | Mobile | 345-345-3456 |
| 2 | Jane | Doe | Mobile | 456-456-4567 |
有没有办法将查询输出生成为 JSON,使其看起来像这样:
{
"data": [{
"id": 1,
"first_name": "John",
"last_name": "Doe",
"phone": [{
"type": "Home",
"number": "123-123-1234"
},
{
"type": "Work",
"number": "234-234-2345"
},
{
"type": "Mobile",
"number": "345-345-3456"
}
]
}, {
"id": 2,
"first_name": "Jane",
"last_name": "Doe",
"phone": [{
"type": "Mobile",
"number": "456-456-4567"
}]
}]
}
【问题讨论】:
-
请用您拥有的 mysql 版本标记您的问题。提示JSON_ARRAYAGG(用于电话号码)和JSON_OBJECT