文章介紹了在mysql中的內(nèi)連接與外連接與交叉連接用法與舉例說明了,有需要了解的朋友可以參考一下下.
一)內(nèi)連接
SQL INNER JOIN 關(guān)鍵字,在表中存在至少一個(gè)匹配時(shí),INNER JOIN 關(guān)鍵字返回行,內(nèi)連接查詢操作列出與連接條件匹配的數(shù)據(jù)行,它使用比較運(yùn)算符比較被連接列的列值,內(nèi)連接分三種:
1、等值連接:在連接條件中使用等于號(hào)(=)運(yùn)算符比較被連接列的列值,其查詢結(jié)果中列出被連接表中的所有列,包括其中的重復(fù)列.
語法,代碼如下:
- SELECT column_name(s)
- FROM table_name1
- INNER JOIN table_name2
- ON table_name1.column_name=table_name2.column_name
- --Vevb.com
注釋:INNER JOIN 與 JOIN 是相同的.
例,下面使用等值連接列出authors和publishers表中位于同一城市的作者和出版社,代碼如下:
- SELECT *
- FROM authors AS a INNER JOIN publishers AS p
- ON a.city=p.city
2、不等連接:在連接條件使用除等于運(yùn)算符以外的其它比較運(yùn)算符比較被連接的列的列值,這些運(yùn)算符包括>、>=、<=、<、!>、!<和<>.
3、自然連接:在連接條件中使用等于(=)運(yùn)算符比較被連接列的列值,但它使用選擇列表指出查詢結(jié)果集合中所包括的列,并刪除連接表中的重復(fù)列.
例,在選擇列表中刪除authors 和publishers 表中重復(fù)列(city和state),代碼如下:
- SELECT a.*,p.pub_id,p.pub_name,p.country
- FROM authors AS a INNER JOIN publishers AS p
- ON a.city=p.city
二)外連接
LEFT JOIN 關(guān)鍵字會(huì)從左表(table_name1)那里返回所有的行,即使在右表 (table_name2)中沒有匹配的行.
外連接,返回到查詢結(jié)果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接或左連接))、右表(右外連接或右連接)或兩個(gè)邊接表(全外連接)中的所有數(shù)據(jù)行.
left join(左聯(lián)接) 返回包括左表中的所有記錄和右表中聯(lián)結(jié)字段相等的記錄;
right join(右聯(lián)接) 返回包括右表中的所有記錄和左表中聯(lián)結(jié)字段相等的記錄;
LEFT JOIN 關(guān)鍵字語法,代碼如下:
- SELECT column_name(s)
- FROM table_name1
- LEFT JOIN table_name2
- ON table_name1.column_name=table_name2.column_name
注釋:在某些數(shù)據(jù)庫中,LEFT JOIN 稱為 LEFT OUTER JOIN.
例如1,代碼如下:
- SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b
- ON a.username=b.username
例如2,代碼如下:
- SELECT a.*,b.*
- FROM city as a FULL OUTER JOIN user as b
- ON a.username=b.username
三),交叉連接
交叉連接不帶WHERE 子句,它返回被連接的兩個(gè)表所有數(shù)據(jù)行的笛卡爾積,返回到結(jié)果集合中的數(shù)據(jù)行數(shù)等于第一個(gè)表中符合查詢條件的數(shù)據(jù)行數(shù)乘以第二個(gè)表中符合查詢條件的數(shù)據(jù)行數(shù),例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的記錄數(shù)將等于6*8=48行.
例如,代碼如下:
- SELECT type,pub_name
- FROM titles CROSS JOIN publishers
- ORDER BY type
SQL JOIN - 使用 Join
除了上面的方法,我們也可以使用關(guān)鍵詞 JOIN 來從兩個(gè)表中獲取數(shù)據(jù),如果我們希望列出所有人的定購,可以使用下面的 SELECT 語句:
- SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
- FROM Persons --Vevb.com
- INNER JOIN Orders
- ON Persons.Id_P = Orders.Id_P
- ORDER BY Persons.LastName
新聞熱點(diǎn)
疑難解答
圖片精選