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