MySQL多表查詢(很全)

2021-10-05 01:47:33 字數 973 閱讀 5431

1)交叉連線查詢

交叉連線:查詢到的是兩個表的笛卡爾積

語法:select * from a,b;

2)內連線查詢

內連線查詢的結果:兩表的交集(公共部分)

隱式內連線查詢:

語法:select * from a,b where a.列名 = b.列名

顯式內連線查詢:

語法:select * from 表名1 inner join 表名2 on 條件;

3)外連線查詢

(1)左外連線

左外連線:用左邊表去右邊表中查詢對應記錄,不管是否找到,都將顯示左邊表中全部記錄。

語法:select * from 表1 left outer join 表2 on 條件;

舉例:select * from a left outer join b on a.id = b.id;

說明:把left 關鍵字之前的表,是定義為左側。 left關鍵字之後的表,定義右側。

查詢的內容,以左側的表為主,如果左側有資料,右側沒有對應的資料,仍然會把左側資料進行顯示。

(2)右外連線

右外連線:用右邊表去左邊表查詢對應記錄,不管是否找到,右邊表全部記錄都將顯示。

語法:select * from 表1 right outer join 表2 on 條件;

4)子查詢

子查詢:把乙個sql的查詢結果作為另外乙個查詢的引數存在。

語法:select * from 表名 limit offset, row_count;

mysql中limit的用法:返回前幾條或者中間某幾行資料

select * from 表名limit 1,4。

1表示索引,注意這裡的索引從0開始。

4表示查詢記錄數。

上述就表示從第2條記錄開始查詢,一共查詢4條,即到第5條。

mysql多表 MySQL 多表查詢

多表查詢 select listname from tablename1,tablename2 笛卡爾積 多表查詢中,如果沒有連線條件,則會產生笛卡爾積 數學中的定義 假設集合a 集合b 則兩個集合的笛卡爾積為 實際執行環境下,應避免使用笛卡爾積 解決方案 在where加入有效的連線條件 等值連線 ...

mysql多表查詢方式 MySQL多表查詢方式問題

你的 sql 沒有用到任何索引,對 a b 兩個表都是全表掃瞄,在資料量小的時候是沒有問題的,但是如果資料量超過 100 萬,效能問題就會突顯出來。這裡不清楚你的 created at 欄位是什麼型別,不過從你的 date format created at,y m d 看來,應該是 datetim...

mysql 多表查詢or MySQL 多表查詢

前期準備 建表create table dep id int,name varchar 20 create table emp id int primary key auto increment,name varchar 20 enum male female not null default ma...