mysql進行多表查詢的方法:1、使用SELECT子句進行查詢;2、使用表格的別名進行查詢;3、透過內連接進行查詢;4、透過巢狀進行查詢;5、透過多表聯合進行查詢。
MySQL如何進行多表查詢?以下這篇文章就來跟大家介紹一些MySQL進行多表查詢的方法,希望對你們有幫助。
(推薦教學:mysql影片教學)
一、使用SELECT子句進行多表查詢
SELECT 字段名 FROM 表1,表2 … WHERE 表1.字段 = 表2.字段 AND 其它查询条件
例:
SELECT a.id,a.name,a.address,a.date,b.math,b.english,b.chinese FROM tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id
註:在上面的程式碼中,以兩張表格的id欄位資訊相同作為條件建立兩表關聯,但在實際開發中不應該這樣使用,最好用主外鍵約束來實作
二、使用表的別名進行多表查詢
#範例:
SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 a,tb_demo065_tel b WHERE a.id=b.id AND b.id='$_POST[textid]'
SQL語言中,可以透過兩種方式為表指定別名:
1、透過關鍵字AS指定,如
SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 AS a,tb_demo065_tel AS b WHERE a.id=b.id
2、在表名後面直接加表的別名實作
SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 a,tb_demo065_tel b WHERE a.id=b.id
使用表的別名應注意幾下幾點
● (1別名通常是一個縮短了的表名,用於在連接中引用表中的特定列,如果連接中的多個表中有相同的名稱列存在,必須用表名或表的別名限定列名
● 如果定義了表的別名就不能再使用表名
三、簡單嵌套查詢(子查詢、內連接)
子查詢:子查詢是一個SELECT查詢,傳回單一值且嵌套在SELECT、INSERT、UPDATE和DELETE語句或其它查詢語句中,任何可以使用表達式的地方都可以使用子查詢。例:
SELECT id,name,sex,date FROM tb_demo068 WHERE id in(SELECT id FROM tb_demo068 WHERE id='$_POST[test]')
內連接:把查詢結果當作WHERE子句的查詢條件即稱為內連接
SELECT filedlist FROM table1 [INNER] JOIN table2 ON table1.column1 = table2.column1
其中,filedlist是要顯示的欄位,INNER表示表之間的連接方式為內連接,table1.column1=table2.column1用於指明兩錶間的連接條件,如:
SELECT a.name,a.address,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id
四、複雜的嵌套查詢
多表之間的巢狀查詢可以透過謂詞IN實現,語法格式如下:
test_expression[NOT] IN{ subquery }
參數說明:test_expression指SQL表達式,subquery包含某結果集的子查詢
多表嵌套查詢的原理:無論是多少張表進行嵌套,表與表之間一定存在某種關聯,透過WHERE子句建立此種關聯實現查詢
五、多表聯合查詢
利用SQL語句中的UNION,可以將不同表中符合條件的資料資訊顯示在同一列中。例:
SELECT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten
使用UNION時應注意以下兩點:
● 在使用UNION運算子組合的語句中,所有選擇清單的表達式數目必須相同,如列名、算術表達式及聚合函數等
● 在每個查詢表中,對應列的資料結構必須一樣。
六、複雜內連接查詢
複雜的內連接查詢是在基本的內連接查詢的基礎上再附加一些查詢條件,如:
SELECT a.name,a.address,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id WHERE b.id=(SELECT id FROM tb_demo065 WHERE tb_demo065.name='$_POST[text]')
總之,實現表與表之間的關聯的本質是兩表之間存在共同的資料項或相同的資料項,透過WHERE 子句或內連接INNER JOIN … ON 語句將兩個表連接起來,實現查詢。
以上是mysql如何進行多表查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!