mysql中用游标生成json

hujrc8aj  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(172)

使用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中编写这种代码非常困难。我不知道该用什么。我觉得我想到的一切都是一团糟。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题