1. 程式人生 > >My SQL資料表多表查詢

My SQL資料表多表查詢

多表連線查詢

資料表的連線查詢常用的有內連線和外連線兩種,其中外連線又分為左連線和右連線。

連線.png-48.1kB

內連線查詢

通過INNER JOIN……ON關鍵字實現 命令如下: SELECT field1,field2,……fieldn from table_name INNER JOIN join_table ON join_condition; ***ON 後面的欄位其實就是外來鍵約束中兩個對應的列名

image_1cri0pb5l1av7tg612evm29kdp9.png-59.4kB

外連線查詢

命令如下: SELECT field1,field2,……fieldn from table_name LEFT / RIGHT JOIN join_table ON join_condition;

**左連線和右連線查詢的區別是: 左連線的主表是 'table_name',右連線的主表是'join_table' 查詢時以主表資料為準,主表中有的資料才會顯示,主表中沒有的資料及時附表中有也不顯示在結果中!!

子查詢

子查詢可以將一張表的資料作為條件去查另一張表

單行單列

SELECT */field from table_a WHERE field1 > (SELECT field1 from table_b where field2 = '舉例';

釋義:從B表中查詢出欄位=‘舉例’的資料對應的欄位1,那麼這個查詢結果一定是一個單行單列的資料,再用這個資料查詢最終想要輸出的資料 要求兩個表起碼有一個共有欄位,括號內返回的值必須是單行單列的值!

單行單列.png-12.1kB

單行多列

SELECT */field from table_a WHERE (field1,field2) > (SELECT (field1,field2) from table_b where field2 = '舉例'; 釋義:從B表中查詢出欄位=‘舉例’的資料對應的欄位1和欄位2,再用這兩個資料查詢最終想要輸出的資料 要求兩個表起碼有兩個共有欄位,括號內的返回值和查詢的列名必須一致!

單列多行

SELECT */field from table_a WHERE field1 in (SELECT field1 from table_b); →查詢結果在返回欄位結果內 與其對應的是 not in

,表示查詢結果不在返回欄位結果內in.png-31.8kB

SELECT */field from table_a where field1 >= ANY(SELECT field1 from table_b); →只能查詢數值,滿足ANY後面的返回結果中的任意一個就返回查詢結果

SELECT */field from table_a where field1 >= ALL(SELECT field1 from table_b); →只能查詢數值,滿足ALL後面的返回結果中的全部數值才返回查詢結果