在MySQL中,我們常常會需要關聯同一張表,來得到更加詳細的查詢結果。例如,我們有一個學生表,其中有以下信息:
+----+------------+-------+--------+ | id | name | grade | mentor | +----+------------+-------+--------+ | 1 | Alice | 1 | NULL | | 2 | Bob | 2 | NULL | | 3 | Charlie | 1 | 1 | | 4 | David | 2 | 2 | | 5 | Emily | 1 | 1 | +----+------------+-------+--------+
我們可以根據mentor字段來關聯同一張表,得到每個學生對應的導師信息(如果有的話)。SQL語句如下:
SELECT s.name AS student_name, m.name AS mentor_name FROM student s LEFT JOIN student m ON s.mentor = m.id
代碼解析:
SELECTs.name AS student_name, m.name AS mentor_name:選取學生表和導師表中的姓名列,并別名為student_name和mentor_name。
FROMstudent s:從學生表中選取數據,并別名為s。
LEFT JOINstudent m ON s.mentor = m.id:把學生表和導師表關聯起來,通過學生表中的mentor字段和導師表中的id字段進行連接。這里使用了LEFT JOIN,因為有些學生沒有對應的導師,使用INNER JOIN會丟失這些學生的信息。
運行代碼后,得到以下結果:
+--------------+-------------+ | student_name | mentor_name | +--------------+-------------+ | Alice | NULL | | Bob | NULL | | Charlie | Alice | | David | Bob | | Emily | Alice | +--------------+-------------+
可以看到,這些學生的導師信息已經被正確地關聯查詢出來了。