簡歷搜索系統:一個人可能有多條教育經歷,需在列表頁顯示最高學歷、所有專業匯總、年齡計算。
SELECT
pi.personid,
pi.personname,
pi.sex,
YEAR(pi.birthday) AS birth_year,
MAX(pe.education) AS highest_education,
pe.school,
GROUP_CONCAT(pe.`subject`) AS subjects
FROM person_info pi
LEFT JOIN person_edu pe ON pi.personid = pe.personid
WHERE pi.personid = ?
GROUP BY pi.personid;
GROUP_CONCAT(DISTINCT pe.`subject` ORDER BY pe.`subject` SEPARATOR ';')
group_concat_max_len 限制(默認 1024 字節),大數據量需調大CAST 轉換MIN() 可取最低值GROUP BY 搭配使用TIMESTAMPDIFF(YEAR, pi.birthday, CURDATE()) AS age
personid 的多行合併為一行school)取值不確定(ONLY_FULL_GROUP_BY 模式下報錯)person_edu.personid 建立索引SELECT *,只查所需列group_concat_max_len:SET SESSION group_concat_max_len = 100000;