深刻sql多表差別化結合查詢的成績詳解。本站提示廣大學習愛好者:(深刻sql多表差別化結合查詢的成績詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是深刻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)來完成我們須要的後果。
有興致的同窗可以本身操作一下,驗證下兩種辦法的分歧。