原始查询:
SELECT *
FROM AA
FULL OUTERJOIN BB on (AA.C_ID = BB.C_ID);
Run Code Online (Sandbox Code Playgroud)
如何转换上面的查询以使其在Microsoft Access中兼容?
我假设:
SELECT *
FROM AA
FULL LEFT JOIN BB ON (AA.C_ID = BB.C_ID);
Run Code Online (Sandbox Code Playgroud)
在我正确地将第一个查询转换为与Access兼容的查询之前,我还没有处理过"FULL"标准?
Pau*_*per 31
假设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
Run Code Online (Sandbox Code Playgroud)
如果存在重复行(并且您希望保留它们),请WHERE AA.C_ID IS NULL在末尾添加,或者如果没有来自AA的相应记录,则添加其他仅为空的字段.
编辑:
在这里看到类似的方法.
它建议更详细,但性能更高
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
Run Code Online (Sandbox Code Playgroud)
然而,这种假设AA.C_ID和BB.C_ID不为空.
小智 9
更有效和更快的代码:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75874 次 |
| 最近记录: |