什么是三層查詢
三層查詢是指在SQL語句中的三層嵌套查詢語句。它是一種用來查詢多表關聯(lián)信息的高級查詢方式。在三層查詢中,我們需要嵌套多個SELECT語句,每一層查詢都會返回多行數據,并將其傳遞到下一層查詢中。
三層查詢語法
在MySQL中,三層查詢的語法如下:
SELECT ... FROM table1 WHERE condition1 IN (SELECT ... FROM table2 WHERE condition2 IN (SELECT ... FROM table3 WHERE condition3));
整個查詢語句分為三部分,分別是外層SELECT語句、第二層SELECT語句和第三層SELECT語句。
三層查詢實例
假設我們有三個表,分別是學生表、成績表和科目表,它們之間的關系如下:
- 學生表(students):id、name、gender
- 成績表(scores):id、student_id、subject_id、score
- 科目表(subjects):id、name
現(xiàn)在我們需要查詢每個學生每門科目的平均分,可以通過三層查詢實現(xiàn):
SELECT students.id, students.name, subjects.name, AVG(scores.score) AS avg_score
FROM students
JOIN scores ON students.id = scores.student_id
JOIN subjects ON scores.subject_id = subjects.id
GROUP BY students.id, subjects.id
HAVING COUNT(scores.id) >= (SELECT COUNT(*) FROM subjects)
ORDER BY students.id, subjects.id;
這個查詢語句中,外層SELECT語句查詢每個學生和科目的平均分,第二層SELECT語句在scores表和subjects表之間建立關聯(lián),查詢出科目名稱,第三層SELECT語句在students表和scores表之間建立關聯(lián),查詢出學生ID和名稱。最后,通過JOIN操作將三個表關聯(lián)起來,計算出每個學生每門科目的平均分。