SQL 提供了JOIN
關鍵字來鏈接多張表的查詢(即鏈接的是SELECT
結果集)基本分爲如下幾種:code
內鏈接:JOIN / INNER JOIN,是最爲經常使用的一種鏈接,其效果是隻返回條件匹配的那條數據table
等值鏈接:ON 子句中使用了運算符「=」,且鏈接的兩個字段最好是主鍵 例如select student.name, avg(sc.score) as avg_score from student join score on student.id = sc.id group by name;
select
name | avg_score |
---|---|
趙雷 | 89.66667 |
錢電 | 70.00000 |
孫風 | 80.00000 |
李雲 | 33.33333 |
不等鏈接:ON 子句中使用了不等於運算符,例如"<>" "<=>"等(能夠搜下 SQL 比較運算符)數據
自鏈接:一張錶鏈接自身。例如select * from student a, student b where a.sex = b.sex and a.sex = '男';
至關於作了次笛卡爾積運算,就不所有展現了查詢
id | name | sex | id | name | sex |
---|---|---|---|---|---|
1 | 趙雷 | 男 | 1 | 趙雷 | 男 |
2 | 錢電 | 男 | 1 | 趙雷 | 男 |
3 | 孫風 | 男 | 1 | 趙雷 | 男 |
4 | 李雲 | 男 | 1 | 趙雷 | 男 |
外鏈接:除了返回條件匹配的數據,那些不知足的數據也會返回。根據鏈接表的順序可分爲:tab
select stu.name, avg(sc.score) as avg_score from student stu left join sc on sc.id = stu.id group by stu.name;
name | avg_score |
---|---|
趙雷 | 89.66667 |
錢電 | 70.00000 |
孫風 | 80.00000 |
李雲 | 33.33333 |
張三 | null |
李四 | null |
全(外)鏈接:FULL JOIN / FULL OUTER JOINco
交叉鏈接:CROSS JOIN (可用","代替)join
select * from table1 CROSS JOIN table2;
<=> select * from table1, table2;