MySQL內連線查詢語句
內連線是透過在查詢中設定連線條件的方式,來移除查詢結果集中某些資料行後的交叉連線。簡單來說,就是利用條件表示式來消除交叉連線的某些資料行。 |
在 MySQL FROM 子句中使用關鍵字 INNER JOIN 連線兩張表,並使用 ON 子句來設定連線條件。如果沒有任何條件,INNER JOIN 和 CROSS JOIN 在語法上是等同的,兩者可以互換。
SELECT <列名1,列名2 …> FROM <表名1> INNER JOIN <表名2> [ ON子句]
<列名1,列名2…>:需要檢索的列名。
<表名1><表名2>:進行內連線的兩張表的表名。
內連線是系統預設的表連線,所以在 FROM 子句後可以省略 INNER 關鍵字,只用關鍵字 JOIN。使用內連線後,FROM 子句中的 ON 子句可用來設定連線表的條件。
在 FROM 子句中可以在多個表之間連續使用 INNER JOIN 或 JOIN,如此可以同時實現多個表的內連線。
表 tb_students_info 和表 tb_departments 都包含相同資料型別的欄位 dept_id,在兩個表之間使用內連線查詢。
輸入的 SQL 語句和執行結果如下所示
mysql> SELECT id,name,age,dept_name -> FROM tb_students_info,tb_departments -> WHERE tb_students_info.dept_id=tb_departments.dept_id; +----+--------+------+-----------+ | id | name | age | dept_name | +----+--------+------+-----------+ | 1 | Dany | 25 | Computer | | 2 | Green | 23 | Chinese | | 3 | Henry | 23 | Math | | 4 | Jane | 22 | Computer | | 5 | Jim | 24 | Computer | | 6 | John | 21 | Math | | 7 | Lily | 22 | Computer | | 8 | Susan | 23 | Economy | | 9 | Thomas | 22 | Chinese | | 10 | Tom | 23 | Economy | +----+--------+------+-----------+ 10 rows in set (0.00 sec)
在這裡,SELECT 語句與前面介紹的最大差別是:SELECT 後面指定的列分別屬於兩個不同的表,id、name、age 在表 tb_students_info 中,而 dept_name 在表 tb_departments 中,同時 FROM 字句列出了兩個表 tb_students_info 和 tb_departments。WHERE 子句在這裡作為過濾條件,指明只有兩個表中的 dept_id 欄位值相等的時候才符合連線查詢的條件。
返回的結果可以看到,顯示的記錄是由兩個表中的不同列值組成的新記錄。
提示:因為 tb_students_info 表和 tb_departments 表中有相同的欄位 dept_id,所以在比較的時候,需要完全限定表名(格式為“表名.列名”),如果只給出 dept_id,MySQL 將不知道指的是哪一個,並返回錯誤資訊。
在 tb_students_info 表和 tb_departments 表之間,使用 INNER JOIN 語法進行內連線查詢,輸入的 SQL 語句和執行結果如下所示。
mysql> SELECT id,name,age,dept_name -> FROM tb_students_info INNER JOIN tb_departments -> WHERE tb_students_info.dept_id=tb_departments.dept_id; +----+--------+------+-----------+ | id | name | age | dept_name | +----+--------+------+-----------+ | 1 | Dany | 25 | Computer | | 2 | Green | 23 | Chinese | | 3 | Henry | 23 | Math | | 4 | Jane | 22 | Computer | | 5 | Jim | 24 | Computer | | 6 | John | 21 | Math | | 7 | Lily | 22 | Computer | | 8 | Susan | 23 | Economy | | 9 | Thomas | 22 | Chinese | | 10 | Tom | 23 | Economy | +----+--------+------+-----------+ 10 rows in set (0.00 sec)
在這裡的查詢語句中,兩個表之間的關係透過 INNER JOIN 指定。使用這種語法的時候,連線的條件使用 ON 子句給出,而不是 WHERE,ON 和 WHERE 後面指定的條件相同。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2695164/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql查詢語句5:連線查詢MySql
- mysql查詢語句MySql
- [Mysql 查詢語句]——查詢欄位MySql
- mysql查詢語句集MySql
- MySQL查詢阻塞語句MySql
- Mysql之查詢語句MySql
- [Mysql 查詢語句]——分組查詢group byMySql
- [Mysql 查詢語句]——查詢指定記錄MySql
- mysql高階查詢語句MySql
- MySQL基礎查詢語句MySql
- MySQL之連線查詢MySql
- 3.DQL資料查詢語言(內連線,外連線,自連線)
- MySql中的資料查詢語言(DQL)三:連線查詢MySql
- MySQL之連線查詢和子查詢MySql
- MYSQL學習筆記23: 多表查詢(自連線內連線+左右外連線)MySql筆記
- MySQL的簡單查詢語句MySql
- mysql dba常用的查詢語句MySql
- [Mysql 查詢語句]——集合函式MySql函式
- mysql查詢語句優化工具MySql優化
- mysql 查詢建表語句sqlMySql
- mysql求交集:UNION ALL合併查詢,inner join內連線查詢,IN/EXISTS子查詢MySql
- oracle查詢語句查詢增加一列內容Oracle
- MySQL學習-連線查詢MySql
- MySQL8:連線查詢MySql
- Mybatis連線池_動態sql語句_多表查詢實現MyBatisSQL
- PostgreSQL 原始碼解讀(36)- 查詢語句#21(查詢優化-消除外連線)SQL原始碼優化
- mysql查詢效率慢的SQL語句MySql
- 請教一個mysql查詢語句!!MySql
- mysql-分組查詢-子查詢-連線查詢-組合查詢MySql
- linux下開啟mysql慢查詢,分析查詢語句LinuxMySql
- MYSQL語法:左連線、右連線、內連線、全外連線MySql
- 在mysql查詢效率慢的SQL語句MySql
- Mysql 獲取表設計查詢語句MySql
- MySQL語句第二高的薪水查詢MySql
- Hql查詢語句
- MySQL 查詢常用操作(0) —— 查詢語句的執行順序MySql
- MySQL 連線查詢超全詳解MySql
- PHP連線、查詢MySQL資料庫PHPMySql資料庫