在department表中,我有两个字段:
documentid, which is INT
jsondocument which is JSON
我执行了以下查询:
INSERT INTO department VALUES
(1,'{"department":{
"deptid":"d1",
"deptname":"Marketing",
"deptroom":"Room 7",
"deptphone":["465-8541","465-8542","465-8543"],
"employee":[{
"empid":"e1",
"empname":"Mary Jones",
"empphone":"465-8544",
"empemail":["mjones@gmail.com","mjones@company.com"]},
{
"empid":"e2",
"empname":"Tom Robinson",
"empphone":"465-8545",
"empemail":["trobinson@gmail.com","trobinson@company.com"]},
{
"empid":"e3",
"empname":"Olivia Johnson",
"empphone":"465-8546",
"empemail":["ojohnson@gmail.com","ojohnson@company.com"]}
]}} ' );
使用相同的查询,我又添加了两个部门,每个部门有3名员工。在db小提琴上演示。我只想返回一个部门并列出所有员工,因此如下所示:
部门名称|员工
“市场营销”|“玛丽·琼斯、汤姆·罗宾逊、奥利维亚·Json”(引号的位置无关紧要)
但我能找到的最接近的是这个查询,它列出了所有部门,每个部门只有第一个员工:
select
jsondocument->'$.department.deptname' as deptname,
jsondocument->'$.department.employee[0].empname' as employees
from department;
这是家庭作业--一门初级课程,我已经努力学习到这一点。任何帮助都将不胜感激。
2条答案
按热度按时间j91ykkif1#
这是非常简单的,选择所有的名称进行营销
db<>在这里摆弄
i7uaboj42#
如果您运行的是mysql 8.0,那么可以使用
json_table()
使不安employee
数组,然后进行聚合以将所有员工姓名放在一行上。实际上如果你只需要
empname
s、 您可以稍微缩短查询:db小提琴演示: