select * from taba a,tabb b
where a.userid=b.userid and a.username=b.username
select * from taba a
left join tabb b
on a.userid=b.userid and a.username=b.username
where ……
連表查詢時on後面可以根據需要寫多個條件。
where子句中使用的連線語句,在資料庫語言中,被稱為隱性連線。inner join……on子句產生的連線稱為顯性連線。(其他join引數也是顯性連線)where 和inner join產生的連線關係,沒有本質區別,結果也一樣。但是!隱性連線隨著資料庫語言的規範和發展,已經逐漸被淘汰,比較新的資料庫語言基本上已經拋棄了隱性連線,全部採用顯性連線了。
關鍵字: on
資料庫在通過連線兩張或多張表來返回記錄時,都會生成一張中間的臨時表,然後再將這張臨時表返回給使用者。
在使用left jion時,on和where條件的區別如下:
1、 on條件是在生成臨時表時使用的條件,它不管on中的條件是否為真,都會返回左邊表中的記錄。
2、where條件是在臨時表生成好後,再對臨時表進行過濾的條件。這時已經沒有left join的含義(必須返回左邊表的記錄)了,條件不為真的就全部過濾掉。
由於left join,right join,full join的特殊性,不管on上的條件是否為真都會返回left或right表中的記錄,full則具有left和right的特性的並集。 而inner jion沒這個特殊性,則條件放在on中和where中,返回的結果集是相同的。
sql應盡量使用資料量小的表做主表,這樣效率高,但是有時候因為邏輯要求,要使用資料量大的表做主表,此時使用left join 就會比較慢,即使關聯條件有索引。在這種情況下就要考慮是不是能使用inner join 了。因為inner join 在執行的時候回自動選擇最小的表做基礎表,效率高。
mysql的連表查詢 MySQL 連表查詢
連表查詢 連表查詢通常分為內連線和外連線。內連線就是使用inner join進行連表查詢 而外連線又分為三種連線方式,分別是左連線 left join 右連線 right join 全連線 full join 下來我們一起來看一下這幾種連線方式的區別及基礎用法。內連線inner join inner...
mysql連表查詢
mysql連表查詢 上下 select from a.mobile user where union all select from b.mobile user where 左右 mysql聯合查詢效率較高,以下例子來說明聯合查詢 內聯 左聯 右聯 全聯 的好處 t1表結構 使用者名稱,密碼 use...
SQL連表查詢
感覺好笨,老大寫過想了一會才想明白。因為資料都是在兩個表中的兩個表中,所以是四個表。應該先把乙個表中的兩個表篩選出來,然後再用union.sql union 操作符 union 操作符用於合併兩個或多個 select 語句的結果集。請注意,union 內部的 select 語句必須擁有相同數量的列。...