MySQL3張表鏈表查詢
MySQL是一種常用的關系型數據庫,可以很方便地進行數據操作。當需要查詢多張表的關聯數據時,可以使用鏈表查詢來實現。
假設有三張表,分別為學生表(students)、課程表(courses)和選課表(course_selected)。
學生表中有學生的基本信息,課程表中有課程的基本信息,選課表中記錄了每個學生選擇了哪些課程。
CREATE TABLE `students` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE `courses` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `teacher` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; CREATE TABLE `course_selected` ( `id` int(11) NOT NULL AUTO_INCREMENT, `student_id` int(11) NOT NULL, `course_id` int(11) NOT NULL, PRIMARY KEY (`id`), FOREIGN KEY (`student_id`) REFERENCES `students`(`id`), FOREIGN KEY (`course_id`) REFERENCES `courses`(`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
要查詢每個學生選擇的所有課程,可以使用如下SQL語句:
SELECT s.id, s.name, c.id, c.name, c.teacher FROM students s LEFT JOIN course_selected cs ON s.id = cs.student_id LEFT JOIN courses c ON cs.course_id = c.id;
首先使用LEFT JOIN將學生表和選課表關聯起來,然后再使用LEFT JOIN將選課表和課程表關聯起來,最后查詢結果包含學生ID、學生姓名、課程ID、課程名稱和課程教師。
這樣就可以方便地查詢每個學生選擇的所有課程,可以根據需要對查詢結果進行篩選、排序等操作。