鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ SQLite左連接
SQLite觸發(fā)器(刪除之前/之后)
SQLite Union All操作符
SQLite快速入門(mén)
SQLite LIMIT子句
SQLite更新查詢
SQLite插入查詢
SQLite創(chuàng)建數(shù)據(jù)庫(kù)
SQLite datetime()函數(shù)
SQLite now函數(shù)和時(shí)間格式化
SQLite左連接
SQLite AVG()函數(shù)
SQLite交叉連接(Cross Join)
SQLite運(yùn)算符
SQLite ORDER BY子句
SQLite聚合函數(shù)
SQLite Union操作符
SQLite是什么?
SQLite安裝
PHP連接SQLite數(shù)據(jù)庫(kù)
SQLite命令大全
SQLite LIKE子句
SQLite OR子句
SQLite內(nèi)連接(Inner Join)
SQLite日期和時(shí)間
SQLite WHERE子句
SQLite刪除表
Python連接SQLite數(shù)據(jù)庫(kù)
SQLite刪除觸發(fā)器
SQLite優(yōu)點(diǎn)和缺點(diǎn)
SQLite連接(JOIN子句)
SQLite數(shù)據(jù)類型
SQLite外連接(Outer Join)
SQLite COUNT()函數(shù)
SQLite主鍵
SQLite觸發(fā)器(插入之前/之后)
SQLite HAVING子句
SQLite IN運(yùn)算符
SQLite選擇查詢
SQLite date()函數(shù)
SQLite MAX()函數(shù)
SQLite刪除查詢
SQLite分離數(shù)據(jù)庫(kù)
SQLite教程
SQLite GLOB子句
SQLite MIN()函數(shù)
SQLite導(dǎo)入數(shù)據(jù)
SQLite GROUP BY子句
SQLite表達(dá)式
SQLite語(yǔ)法大全
SQLite外鍵
SQLite觸發(fā)器
SQLite導(dǎo)出數(shù)據(jù)
SQLite juliandday()函數(shù)
SQLite創(chuàng)建表
Java連接SQLite數(shù)據(jù)庫(kù)
SQLite SUM()函數(shù)
SQLite特性/為什么要使用SQLite?
SQLite觸發(fā)器(更新之前/之后)
SQLite strftime()函數(shù)日期日間格式化
SQLite附加/選擇數(shù)據(jù)庫(kù)
SQLite DISTINCT子句
SQLite歷史
SQLite time()函數(shù)

SQLite左連接

類似于INNER JOIN子句,LEFT JOIN子句是SELECT語(yǔ)句的可選子句??梢允褂?code>LEFT JOIN子句來(lái)查詢來(lái)自多個(gè)相關(guān)表的數(shù)據(jù)。

假設(shè)有兩個(gè)表:AB

  • A表有mf字段。
  • B表有nf字段。

要使用LEFT JOIN子句執(zhí)行AB之間的連接,請(qǐng)使用以下語(yǔ)句:

SELECT
 m, n
FROM A
LEFT JOIN B ON A.f = B.f
WHERE search_condition;

表達(dá)式A.f = B.f是條件表達(dá)式。 除了等于(=)運(yùn)算符之外,還可以使用大于(>),小于(<)等的其他比較運(yùn)算符。

該語(yǔ)句返回一個(gè)結(jié)果集,其中包含:

  • A表中的行(左表)在B表中具有相應(yīng)的行。
  • A表中的行存在,但在B表中不存的行使用NULL值填充。

換句話說(shuō),A表中的所有行都包含在結(jié)果集中,無(wú)論B表中是否有匹配的行,如果B表中不匹配則使用NULL值填充。

如果語(yǔ)句中有WHERE子句,那么在LEFT JOIN子句的匹配完成之后,WHERE子句中的search_condition將被應(yīng)用。

請(qǐng)參考A表和B表之間的LEFT JOIN子句,如下圖所示 -

A表中的所有行都包含在結(jié)果集中。

因?yàn)榈诙?a2,2)在B表中沒(méi)有相應(yīng)的行,所以LEFT JOIN子句創(chuàng)建一個(gè)填充有NULL值的假行。

以下圖說(shuō)明了LEFT JOIN子句,黃色部分為最終查詢結(jié)果集 -

假設(shè)有兩個(gè)表:classstudent,分別表示班級(jí)和學(xué)生。其數(shù)據(jù)如下 -

sqlite> select id,class_name,student_id from class;
1|網(wǎng)絡(luò)工程-001班|1
2|網(wǎng)絡(luò)工程-002班|2
3|網(wǎng)絡(luò)工程-003班|3
4|網(wǎng)絡(luò)工程-004班|4
sqlite>
sqlite> select id,name,age,address,fees from student;
1|Maxsu|27|Shengzhen|20000.0
2|Minsu|25|Beijing|15000.0
3|Avgsu|23|Shanghai|2000.0
4|Linsu|25|Guangzhou|65000.0
5|Sqlsu|26|Haikou|25000.0
6|Javasu|21|Shengzhen|18000.0
7|Linsu|27|Haikou|10000.0
8|Minsu|23|Guangzhou|5000.0
9|Maxsu|23|Shenzhen|9000.0
sqlite>

現(xiàn)在使用 left join查詢每個(gè)學(xué)生所在的班級(jí)信息 -

select name,age,address,fees,class_name from student left join class on student.id=class.student_id where student.id > 0;

執(zhí)行上面語(yǔ)句,得到以下結(jié)果 -

sqlite>  select student.id,name,age,address,fees,class_name from student left join class on student.id=class.student_id where student.id > 0;
1|Maxsu|27|Shengzhen|20000.0|網(wǎng)絡(luò)工程-001班
2|Minsu|25|Beijing|15000.0|網(wǎng)絡(luò)工程-002班
3|Avgsu|23|Shanghai|2000.0|網(wǎng)絡(luò)工程-003班
4|Linsu|25|Guangzhou|65000.0|網(wǎng)絡(luò)工程-004班
5|Sqlsu|26|Haikou|25000.0|
6|Javasu|21|Shengzhen|18000.0|
7|Linsu|27|Haikou|10000.0|
8|Minsu|23|Guangzhou|5000.0|
9|Maxsu|23|Shenzhen|9000.0|
sqlite>