我有以下 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
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)
您需要使用子选择来应用条件:
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;
如果您在打开“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;
您需要在 Access 中对其进行编辑吗?如果没有,只需使用带有本机 T-SQL 的直通查询。如果是这样,我可能会为此创建一个服务器端视图,并且如果文字值是您要参数化的值(即 F_ID=3 实际上是 F_ID=N,其中 N是运行时选择的值)。
顺便说一句,我在 Access 中工作时每天都会编写这些子选择派生表 SQL 语句。这没什么大不了的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)