MySQL 數據庫中的一對多查詢,是指一個表(關系表)中的一條數據,對應另一個表中的多條數據。常見的場景是:學生表和課程表,一個學生可以選擇多門課程,因此在查詢學生信息時,需要聯合查詢課程表,才能獲取到學生選擇的所有課程信息。
SELECT s.*, c.course_name FROM student s LEFT JOIN course c ON s.id = c.student_id
這是一種常見的聯合查詢方式,通過 LEFT JOIN 關鍵字,將兩張表聯合起來,返回學生信息和對應的課程名稱。需要注意的是,一定要指定表的別名,否則 SQL 解析器將無法理解查詢語句。
在實際應用中,一對多查詢還有其他的表現形式,根據具體的需求,可以選擇適用的查詢方式。如下例所示:
-- 獲取學生總人數和每個學生所選課程的數量 SELECT s.*, COUNT(c.id) AS course_num FROM student s LEFT JOIN course c ON s.id = c.student_id GROUP BY s.id -- 獲取每門課程的總選課人數和每個選課人所在的城市 SELECT c.*, COUNT(sc.id) AS student_num, s.city FROM course c LEFT JOIN student_course sc ON c.id = sc.course_id LEFT JOIN student s ON sc.student_id = s.id GROUP BY c.id
除了以上查詢語句外,還有一些其他的高級查詢方式,比如使用 EXISTS 子查詢、使用 HAVING 關鍵字篩選數據等等。需要根據實際需求來選擇相應的查詢方式,以提高查詢效率和準確性。
下一篇前端css空格