連線查詢 (左連線 右連線 內連線)
笛卡爾乘積
集合特性
: 確定性 無序性 唯一性
一張表可以看做是乙個集合,每行資料相當於集合的乙個元素
union
時 去掉重複
原理 就是集合元素的唯一性
表中存在完全相同的兩行 是因為
表內部存在 rowid
進行區分
笛卡爾積
如果 a∈a, b∈b
a*b = ( a, b);
例如a=(1,2,3,4,5);
b=(11,12);
那麼a*b
(1,11), (2,11), (3,11), (4,11), (5,11),
(1,12), (2,12), (3,12), (4,12), (5,12);
a有 m 個元素 b 有n 個元素
那麼 a*b 有 m*n個元素
同理表a有 m 行 表b 有n 行
那麼 a*b 有 m*n行
例如:ta tb兩表
笛卡爾積
通過分析可以看出
tb表的 a
b cd
每個分別和 ta
的a b c d
組合一遍
左連線
1連上表
2
連線條件
例如:
select
good_id,goods.cat_id,goods_name,shop_price
from
goods left join category
on good.cat_id = category.cat_id;
欄位名重複那麼需要加表字首,否則會報錯;
error 1052(23000) column * in field list is ambiguous
最後兩行可以看 作是一張表。
左連線語法:
select列1,列2,列n
from
table 1left jointable 2
ontable 1
列 = table 2 列;
on後面的條件只要是條件就可以 可以不是等於 但是常用是等於。將from 後面的當做乙個普通表看待。
右連線語法:
select列1,列2,列n
from
table 1right jointable 2
ontable 1
列 = table 2 列;
內連線 inner
select列1,列2,列n
from
table 1inner jointable 2
ontable 1
列 = table 2 列;
左連線 右連線 內連線的區別和聯絡:
左連線和右連線
是以左邊的表為基準。通俗的講,先將左邊的表全部顯示出來,然後右邊的表id與左邊表id相同的記錄就「拼接」上去,比如說id為1的記錄。如果沒有匹配的id,比如說t1中id為2的t2中就沒有。那邊就以null顯示。內連線右外連線過程正好相反。
只有一條記錄。內連線就是只取出符合過濾條件的記錄 也就是t1.id=t2.id 那麼符合t1.id=t2.id的記錄只有id=1這一條,所以只顯示一條。 不像外連線,是將你作為基準的表(左外連線就是左邊表為基準,右外連線就是右邊表為基準)的所有行都顯示出來。-----------------[以下為網上的一點資料(貼上的)]------------------
left join操作用於在任何的 from 子句中,組合**表的記錄。使用 left join 運算來建立乙個左邊外部聯接。左邊外部聯接將包含了從第乙個(左邊)開始的兩個表中的全部記錄,即使在第二個(右邊)表中並沒有相符值的記錄。
語法:from table1 left join table2 on table1.field1 compopr table2.field2
說明:① table1, table2引數用於指定要將記錄組合的表的名稱。
② field1, field2引數指定被聯接的字段的名稱。且這些字段必須有相同的資料型別及包含相同型別的資料,但它們不需要有相同的名稱。
③ compopr引數指定關係比較運算子:"=", "", "<=", ">=" 或 "<>"。
④ 如果在inner join操作中要聯接包含memo 資料型別或 ole object 資料型別資料的字段,將會發生錯誤
Oracle笛卡爾積與連線查詢
一 外連線 左外連線 左表字段的全部記錄顯示,右表顯示條件限定的字段記錄,非條件限定的顯示null。可以加where限定 select from dept d1 left join emp d2 on d1.deptno d2.deptno select from dept d1 left join...
避免笛卡爾積
在mysql中建立臨時表 create table temptable 2 instanceid numeric 30 celltype varchar 128 enodeb id numeric 30 eutrancell id numeric 30 engine myisam default c...
js笛卡爾積
可以用來模擬路徑,或者標籤的順序。笛卡兒積組合 function descartes list var result var pindex null var tempcount 0 var temp 根據引數列生成指標物件 for var index in list pindex index 單維度...