ACCESS中不支援FULL JOIN的解決方案

2022-03-02 03:39:12 字數 942 閱讀 4853

今天做了個檢視,join了兩張表,要求除了inner join的記錄,還要兩張表的其他未選取的記錄,所以偶就想到了full jion。試了一下access居然不支援,狂鬱悶啊!!

到網上差了一下有哥們說先left join,再right join最後再union all一下(兩個表結構要相同)。思路是對的,不過他的兩張表都是select *的,所以是可以的,可是我兩張表都要選取部分欄位的,結果出現了inner join外的記錄有部分沒有取到值。不知道這樣描述各位是否能看懂,舉個例子吧:

(select t1.a,ti.b from ti left join t2 on (ti.c=t2.c))

union all

(select t1.a,ti.b from ti right join t2 on (ti.c=t2.c))

這樣去除的記錄有部分a和b欄位是沒有值的,為什麼呢?

leftjoin 和 right join 的時候一定要注意表和字段的對應,一般來說leftjoin的值取自前乙個表(t1),right join 的值取自後乙個表(t2)。所以語句要改成這樣:

(select t1.a,ti.b from ti left join t2 on (ti.c=t2.c))

union all

(select t2.a,t2.b from ti right join t2 on (ti.c=t2.c))

這樣的查詢還是有問題的,當存在inner join時,因為是union all的所以會有重覆記錄的

最徹底的解決是把上述語句儲存成檢視(view),呼叫時distinct一下,就可以了

呵呵, 實現了和full join一樣的效果,o(∩_∩)o...

補充

換成union,這樣做union的效率沒有union all高(因為union操作後,要刪除重覆記錄、排序等操作),就不用再distinct了,呵呵!!

mysql不支援 MySQL不支援的特性

mysql 1 不支援物化檢視。2 不支援位圖索引。3 不支援並行查詢。4 不支援雜湊關聯,mysql的所有關聯都是巢狀迴圈關聯。不過,可以通過建立乙個雜湊索引來曲線實現。5 不允許對同一表同時進行查詢和更新。報錯 update tb1 as outer tb1 set cnt select cou...

rsyslog input 不支援變數

input type imfile file usr local apache tomcat 7.0.55 8082 logs localhost access log.txt tag zjzc api access01 severity info facility local5 不支援這種寫法 i...

linux vi 不支援中文

問題說明 網頁html與chi語言的結合,使用c語言輸出html語句,因為其中用到中文,出現亂碼 問題解決 1.在cgi中用到的 使用utf 8編碼,utf 8是國際統一的中文編碼 具體語句為 fprintf cgiout,metacharset utf 8 參考文章 2.上述步驟完成後,重新編譯,...