我有3个数据库表。
用户
书
用户\u书籍
在mysql查询中,我希望从users表、books和uers\u books中获取所有列,作为mysql查询中的json数据。所以结果的一列将包含json数据。
请参阅样本数据和预期结果。
Sample Data
=============
Users
------------------
user_id, user_name
------------------
1, User_A
2, User_B
3, User_C
Books
------------------
book_id, book_name
------------------
1, Book_A
2, Book_B
3, Book_C
Users_Books
-----------------------------------
assigned_date, user_id, book_id
-----------------------------------
01-01-2020, 1, 1
02-01-2020, 1, 2
03-01-2020, 1, 3
04-01-2020, 2, 1
05-01-2020, 3, 1
06-01-2020, 4, 1
Sample Output
==============================
user_id, user_name, json_col
------------------------------
1, User_A, (See Json Output below for this row)
2, User_B
3, User_C
[{
"assigned_date": "01-01-2020",
"user_id": "1",
"book_id": "1",
"book_detail": {
"book_id": "1",
"book_name": "Book_A"
}
}, {
"assigned_date": "02-01-2020",
"user_id": "1",
"book_id": "2",
"book_detail": {
"book_id": "2",
"book_name": "Book_B"
}
}, {
"assigned_date": "03-01-2020",
"user_id": "1",
"book_id": "3",
"book_detail": {
"book_id": "3",
"book_name": "Book_C"
}
}]
我不想使用组\u concat。我只想像这个页面上的第一个解决方案一样使用join。mysql一对多到json格式
1条答案
按热度按时间rkttyhzu1#
您应该使用json_object()和json_arrayagg()的组合。如果那不是你想要的,我很抱歉。
MySQL5.7.22及更高版本支持这些json函数。如果您使用的是旧版本,则必须先升级。
p、 答:这与您的问题无关,但您应该以yyyy-mm-dd格式正确存储日期
DATE
列,而不是mm dd yyyy格式的字符串。