深入sql多表差異化聯合查詢的問題詳解
本章簡略講述本人在例項開發中遇到的多表查詢的問題
其中主要講述
select A.*,B.*,C.* from A,B,C
和
select A.*,B.*,C.* from 表A inner join 表B on A.id=B.id inner join 表C on A.code=C.code
的區別
最近遇到一個這樣的專案需求——要求頁面集合顯示三個關聯表的資訊。
由於實際專案裡出現的欄位比較多,現在簡化說明如下:
table A 含有欄位 UserName,CardCode,ItamCode
table B 含有欄位 CardCode,CardName
table C 含有欄位 ItamCode,ItamName
其中介面要在一個資料集裡同時出現UserName,CardName,ItamName
話說雖然學過SQL 內聯,外聯的問題,但是以前的專案基本出現的都是兩個表的關聯實現,現在是第一次用到超過兩個表的關聯實現問題。在百度找了一下資料,才發現原來基本原理是一樣的。哈,本人去年才入職,經驗不足,大神們,請別見笑哈!
呃,如果讀者暫時還不熟悉SQL基本內聯,外聯的相關知識,請自覺找度娘面壁去哈,筆者在這裡不熬述了。長話短說,現在進入正題……
發現要實現上面的功能有兩種方法,分別是
select A.UserName,B.CardName,C.ItamName from A,B,C
和
select A.UserName,B.CardName,C.ItamName from 表A inner join 表B on A.CardCode=B.CardCode inner join 表C on A.ItamCode=C.ItamCode
(如果欄位是差異化的話,可以略寫表名)
就上面的語法來說,其實兩種實現方法的效果是一樣的,但如果真要較真細說優劣的話,還是第二種實現方法比較實用的。
用inner join(全外聯)的寫法, 不僅可以按照實際需求自由轉化left join(左外聯)和right join(右外聯),而且註明了結合的順序, 特別是支援了SQL文最佳化的方便。
還有一個就是說當我某個欄位可以為null的時候,第一種查詢方法得出的值其實是不完全的。比如說我上面的例子中當table C 的ItanName 並非必填的時候,只能透過左外連線(left join)來實現我們需要的效果。
有興趣的同學可以自己操作一下,驗證下兩種方法的不同。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4650/viewspace-2804061/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 多表聯合查詢 - 基於註解SQLSQL
- JPA 之 多表聯合查詢
- SQL優化之多表關聯查詢-案例一SQL優化
- mybatis多表聯合查詢的寫法MyBatis
- jpa動態查詢與多表聯合查詢
- SQL查詢的:子查詢和多表查詢SQL
- 史上最簡單MySQL教程詳解(基礎篇)之多表聯合查詢MySql
- 一個MySQL多表查詢的問題MySql
- SQL面試題 三(單表、多表查詢)SQL面試題
- SQL 三表聯合查詢SQL
- 01-sql-聯合查詢SQL
- JPA多表關聯查詢
- MYSQL學習筆記24: 多表查詢(聯合查詢,Union, Union All)MySql筆記
- mysql中的多表關聯查詢MySql
- sql 模糊查詢問題SQL
- MyBatisPlus怎麼多表關聯查詢?MyBatis
- 如何做多表關聯查詢
- springDataJpa多表級聯查詢(@ManyToOne @OneToOne)Spring
- sql一關聯多查詢時否定篩選出現的問題的解決SQL
- 開發人員不得不會的MySQL多表聯合查詢方法!MySql
- 多表查詢
- 深入mysql慢查詢設定的詳解MySql
- MySQL的GROUP_CONCAT函式輕鬆解決多表聯查的聚合問題MySql函式
- onethinkphp 如何做多表關聯查詢PHP
- Oracle總結【SQL細節、多表查詢、分組查詢、分頁】OracleSQL
- MySQL 優化五(關聯查詢子查詢以及 in 的效率問題)(高階篇)MySql優化
- Spring Data Jpa 的簡單查詢多表查詢HQL,SQL ,動態查詢, QueryDsl ,自定義查詢筆記SpringSQL筆記
- 20、聯表查詢JoinON詳解
- MySQL 多表查詢MySql
- 04多表查詢
- mysql多表查詢MySql
- 【MySQL】多表查詢MySql
- Spring Data JPA 實現多表關聯查詢Spring
- SQL Server 查詢超時問題排查SQLServer
- leetcode題解(查詢表問題)LeetCode
- Python異常 ValueError的問題詳解PythonError
- 解決 mybatis一對多分頁問題 聯級查詢MyBatis
- 【學習】SQL基礎-006-多表連線查詢SQL