原始查询:
SELECT *
FROM AA
FULL OUTERJOIN BB on (AA.C_ID = BB.C_ID);
如何转换上述查询以使其在MicrosoftAccess中兼容?
我假设:
SELECT *
FROM AA
FULL LEFT JOIN BB ON (AA.C_ID = BB.C_ID);
以前我还没有处理过“FULL”条件,我是否正确地将第一个查询转换为与Access兼容的查询?
SELECT *
FROM AA
LEFT JOIN BB ON AA.C_ID = BB.C_ID
UNION ALL
SELECT *
FROM AA
RIGHT JOIN BB ON AA.C_ID = BB.C_ID
WHERE AA.C_ID IS NULL
假设AA和BB中没有重复行(即所有相同的值),则完全外部联接相当于左联接和右联接的联合。
SELECT *
FROM AA
LEFT JOIN BB ON AA.C_ID = BB.C_ID
UNION
SELECT *
FROM AA
RIGHT JOIN BB ON AA.C_ID = BB.C_ID
如果有重复行,添加WHERE AA.C_ID IS NULL
在末尾,或者其他字段,如果没有来自AA的对应记录,则为NULL。
SELECT *
FROM AA
JOIN BB ON AA.C_ID = BB.C_ID
UNION ALL
SELECT *
FROM AA
LEFT JOIN BB ON AA.C_ID = BB.C_ID
WHERE BB.C_ID IS NULL
UNION ALL
SELECT *
FROM AA
RIGHT JOIN BB ON AA.C_ID = BB.C_ID
WHERE AA.C_ID IS NULL
然而,这假设AA.C_ID
和BB.C_ID
都不是空的。