Sup*_*bbs 8 sql ms-access left-join
我有以下T-SQL查询(一个简单的测试用例)在MS SQL中正常运行但无法在MS Access(JET-SQL)中获得等效查询.问题是LEFT JOIN中的附加标准.我怎样才能在MS Access中执行此操作?
T-SQL:
SELECT * FROM A
LEFT OUTER JOIN B ON A.ID = B.A_ID
AND B.F_ID = 3
Run Code Online (Sandbox Code Playgroud)
JET-SQL(我到目前为止但崩溃了Access!):
SELECT * FROM dbo_A
LEFT JOIN dbo_B ON (dbo_A.ID = dbo_B.A_ID AND dbo_B.F_ID = 3)
Run Code Online (Sandbox Code Playgroud)
Dav*_*ton 12
您需要使用子选择来应用条件:
SELECT *
FROM dbo_A LEFT JOIN
[SELECT dbo_B.* FROM dbo_B WHERE dbo_B.F_ID = 3]. AS dbo_B
ON dbo_A.ID = dbo_B.A_ID;
Run Code Online (Sandbox Code Playgroud)
如果您在启用"SQL 92"兼容模式的情况下运行Access,则可以执行更标准的操作:
SELECT *
FROM dbo_A LEFT JOIN
(SELECT dbo_B.* FROM dbo_B WHERE dbo_B.F_ID = 3) AS dbo_B
ON dbo_A.ID = dbo_B.A_ID;
Run Code Online (Sandbox Code Playgroud)
您是否需要在Access中进行编辑?如果没有,只需使用本机T-SQL的passthrough查询.如果是这样,我可能会为此创建一个服务器端视图,我特别想在服务器端移动它,如果文字值是你要参数化的东西(即,F_ID = 3真的是F_ID = N其中N是在运行时选择的值).
顺便说一句,我在Access中工作时,每天都会编写这些子选择派生表SQL语句.这不是什么大不了的事.