在MySQL關聯查詢中,可以使用GROUP BY子句對查詢結果進行分組,使用ORDER BY子句對分組后的結果進行排序。以下是一個示例:
假設有兩個表,一個是學生表(student),一個是課程表(course),學生表中包含學生的ID和姓名,課程表中包含課程的ID和名稱,兩個表之間通過學生選課的關系表選課表(student_course)進行關聯。
SELECT s.student_id, s.student_name, COUNT(c.course_id) AS num_courses
FROM student s
LEFT JOIN student_course sc ON s.student_id = sc.student_id
LEFT JOIN course c ON sc.course_id = c.course_id
GROUP BY s.student_id, s.student_name
ORDER BY num_courses DESC;
在這個查詢中,首先通過LEFT JOIN將學生表和選課表關聯起來,然后再通過LEFT JOIN將選課表和課程表關聯起來。然后使用GROUP BY子句按學生ID和姓名進行分組,使用COUNT函數統計每個學生選修的課程數。最后使用ORDER BY子句按選修的課程數降序排序。
SELECT c.course_id, c.course_name, AVG(sc.score) AS avg_score
FROM course c
LEFT JOIN student_course sc ON c.course_id = sc.course_id
GROUP BY c.course_id, c.course_name
ORDER BY avg_score ASC;
在這個查詢中,首先通過LEFT JOIN將課程表和選課表關聯起來。然后使用GROUP BY子句按課程ID和名稱進行分組,使用AVG函數計算每門課程的平均成績。最后使用ORDER BY子句按平均成績升序排序。