使用5.7版将结果从游标提取为json格式的最佳方法是什么?
我需要json看起来像这样:
{
"2018V": {
"students": {
"1": {
"fName": "John",
"dob": "4/8/1998",
"classes": []
},... and more student ID's
}
},... and more semesters
}
有人建议我只使用一个游标来获取大量数据,而不是使用三个或四个嵌套的游标,因此游标如下所示:
DECLARE done BOOLEAN DEFAULT FALSE;
DECLARE infoJson JSON DEFAULT '{}';
DECLARE currSemester CHAR(10);
DECLARE currStudentID INT;
DECLARE currStudentName VARCHAR(140);
DECLARE currStudentSSN VARCHAR(10);
DECLARE currCourseNumber CHAR(10);
DECLARE curStudentsInfo CURSOR FOR SELECT `StudentCourses`.semester, `Students`.studentID, `Students`.studentName,`Students`.studentSSN, `StudentCourses`.courseNumber
FROM `StudentCourses`
INNER JOIN `Students` ON `StudentCourses`.studentID = `Students`.studentID
ORDER BY `StudentCourses`.semester;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;
OPEN curStudentsInfo;
infoLoop: LOOP
FETCH curStudentsInfo INTO currSemester, currStudentID, currStudentName, currStudentSSN, currCourseNumber;
IF done THEN
CLOSE curStudentsInfo;
LEAVE infoLoop;
END IF;
-- Code here
END LOOP infoLoop;
我处理的数据如下所示:
这里一共有四个人,记录在案的只有两个学期,但数据库里还有很多。
semester studentID studentName studentSSN courseNumber
--------------------------------------------------------
2018H 3 Birkir Geir 2001979230 GSF2A3U
2018H 3 Birkir Geir 2001979230 STÆ303
2018V 5 Reynir 1508984089 STÆ203
2018V 6 Róbert Ingi 1707001234 STÆ603
...
现在我应该采取什么样的方法呢?我已经花了很长时间试图弄清楚这一点,但我发现在mysql中编写这种代码非常困难。我不知道该用什么。我觉得我想到的一切都是一团糟。
暂无答案!
目前还没有任何答案,快来回答吧!