2
我試圖做一個完整的外部,以檢查哪個ID都包含在這兩個/只表的一個連接兩個表在MS Access CMVSC
和TOXOSC
的:MS Access完全外部連接中令人費解的行爲?
(SELECT * FROM CMVSC LEFT JOIN TOXOSC ON CMVSC.ID = TOXOSC.ID)
UNION
(SELECT * FROM TOXOSC LEFT JOIN CMVSC ON TOXOSC.ID = CMVSC.ID);
查詢可以執行,但不會產生我所期望的。
前幾個記錄CMVSC(按升序編號的順序排列)是:
ID CMV_NEGDATE CMV_POSDATE
10245 04.02.2010 28.06.1999
10642 08.10.1998 05.09.1991
前幾個記錄TOXOSC(按升序編號的順序排列)是:
ID TOXO_NEGDATE TOXO_POSDATE
10120 22.11.1993 05.04.1991
10261 09.02.1998 23.02.1996
這裏是來自上述查詢的前兩條記錄:
CMVSC.ID CMV_NEGDATE CMV_POSDATE TOXOSC.ID TOXO_NEGDATE TOXO_POSDATE
10120 22.11.1993 05.04.1991
10245 04.02.2010 28.06.1999
請注意TOXOSC
的記錄是如何得到的分配給CMV*
變量,就像CMVSC
的記錄一樣。
這怎麼可能?
我沒想到'UNION'忽略列標識符。這是標準的SQL92行爲還是訪問權限? – blubb
這是標準。 'UNION'不使用列標識符,但列列表的順序(以及除第一個子查詢之外的任何標題都被忽略)。 –
@Simon Stelling:SQL-92 provides [[UNION CORRESPONDING']](http://books.google.co.uk/books?id=406_pJtiJ6sC&pg=PA119&dq=%22SQL+and+Relational+Theory%22+%22How+對於您期望的行爲,您可以爲+寫入+準確+ SQL +代碼%22 +%22union +對應%22&hl = en&ei = IvZUTuDrHMjAtAa0oKn2Dw&sa = X&oi = book_result&ct = result&resnum = 1&ved = 0CCsQ6AEwAA#v = onepage&q&f =不用說,Access團隊還沒有實現它:( – onedaywhen