Mysql 內連線 左連線會出現笛卡爾積

2021-10-24 13:13:22 字數 1464 閱讀 3115

有兩張表,user表和job表,表資料如下

這種等同於(交叉查詢等於不加on的內連線)

select

*from

`user` , job;

sql執行結果:

結論:交叉連線,會產生笛卡爾積。

結論:假如,內連線查詢,on條件是a表或者b表的唯一字段,則結果集是兩表的交集,不是笛卡爾積。

如果a表有m條記錄,m1條符合on條件,b表有n條記錄,有n1條符合on條件,則結果集是m1*n1

結論:假如,on條件是表中非唯一字段,則結果集是兩表匹配到的結果集的笛卡爾積(區域性笛卡爾積) 。

假如a表有m條記錄,b表有n條記錄,則結果集是m條

結論:on條件是唯一字段,則結果集是左表記錄的數量。

如果a表有m條記錄,m1條符合on條件,b表有n條記錄,有n1條符合on條件,則結果集是 (m-m1) + m1*n1

結論:左連線非唯一字段,是區域性笛卡爾積。

同左連線,這裡就不贅述了

mysql 內連線 左連線 右連線

記錄備忘下,初始資料如下 drop table ifexists t demo product create table ifnot exists t demo product proid int 20 proname varchar 20 price int 10 primary key proi...

mysql 內連線,左連線,右連線

本文 於 用兩個表 a table b table 關聯欄位a table.a id和b table.b id來演示一下mysql的內連線 外連線 左 外 連線 右 外 連線 全 外 連線 mysql版本 server version 5.6.31 mysql community server gp...

Mysql內連線 左連線 右連線查詢

建表語句如下 建立表a table table structure for a table drop table if exists a table create table a table id smallint 6 auto increment,name varchar 10 not null,...