小编典典

左加入MS Access中的其他条件

sql

我有以下T-SQL查询(一个简单的测试用例)在MS SQL中运行良好,但无法在MS Access(JET-SQL)中获得等效查询。问题是左联接中的附加条件。
如何在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)

阅读 173

收藏
2021-04-22

共1个答案

小编典典

您需要使用子选择来应用条件:

  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语句。没什么大不了的。

2021-04-22