我正在尝试在Access中构建一个复杂的查询。我使用了“不匹配的查询”向导来检查一个表中的多个字段是否与另一个表中的字段不匹配。其中一些需要是子串。基本上如果Table1.F的右边两个字符= Table2.F的右边2个字符。
如果我在SQL视图中编写它,我的SQL是正确的。但是当我尝试切换回设计视图时,我收到一条消息:
Microsoft Access无法在设计视图中表示连接表达式Right(Table1.F,2)= Right(Table2.F,2)。
这基本上就是我所拥有的:
UPDATE TABLE1 LEFT JOIN TABLE2 ON (TABLE1.A = TABLE2.A) AND (TABLE1.B =
TABLE2.B)...
AND ( RIGHT(TABLE1.F,2) = RIGHT(TABLE2.F,2) )
SET TABLE1.ERROR = X
WHERE (TABLE2.A IS NULL) AND (TABLE2.B IS NULL)... ;
有没有办法以设计视图接受的方式编写它?
答案 0 :(得分:0)
尊重mysql在ms-access中,设置值放在连接条件
之前 UPDATE T
SET T.ERROR = X
FROM TABLE1 AS T
LEFT JOIN TABLE2 ON TABLE1.A = TABLE2.A
AND TABLE1.B = TABLE2.B ...
AND RIGHT(TABLE1.F,2) = RIGHT(TABLE2.F,2)
AND TABLE2.A IS NULL AND TABLE2.B IS NULL ... ;
你可以避免unuseful()围绕比较,并且总体上不要使用左连接所涉及的表的列条件。 以这种方式作为内部连接的工作 移动左连接的on子句中的条件
答案 1 :(得分:0)
当我尝试使用在线工具格式化SQL查询时,我遇到了类似的问题。事实证明,如果方括号之前或之后有空格,则MS-access无法翻译查询的联合部分 例如
INNER JOIN Tb1 ON (Tb.F = Tb2.F1)
从sql转换为设计视图,但是
INNER JOIN Tb1 ON ( Tb.F = Tb2.F1 )
不会