JOIN 中的几个 ON 子句在 Access 中无法正常工作

Several ON clause in JOIN doesn't work properly in Access

这个问题真的很奇怪。下面的代码给出了错误,存在 unsupportable JOIN 语句

update ((s2t
left join tables on
S2T.[table] = Tables.TableName)
left join Columns on 
(S2T.[column] = Columns.ColumnName))

left  join s2t_source on
(   s2t_source.source_table = "money")  
set s2t.source_id = 1;

但后来我以这种方式更改了第三个 JOIN 的加入条件,它开始起作用了:

update ((s2t
left join tables on
S2T.[table] = Tables.TableName)
left join Columns on 
(S2T.[column] = Columns.ColumnName))
inner join s2t_source on
(    s2t_source.source_table = S2T.[table])

set s2t.source_id = 1;

我做错了什么?首先,我认为该问题与 ON clauses 有关,它使用了刚刚加入 table 的信息。但是后来我发现 similar code,这似乎可行。我很困惑。这怎么可能,更改 ON 子句会使查询失败?

upd1: 我认为问题与数据类型无关。

Text datatype: s2t_source.source_table, s2t_source.source_field, S2T.[table], S2T.[列], Tables.TableName, Columns.ColumnName

Integer datatype: Tables.id, Columns.id, s2t.source_id

upd2: 我用的是Access 2010,在这3个table中,table之间只有1个外键,名字叫TablesColumns

Tables.id = Columns.table_id

s2t_source.source_table = "money"

...不是 JOIN 条件而是 WHERE 条件。右边的站点变量应该包含前面 tables/joins 的内容。

不知道上下文,只能猜解:

update ((s2t
left join tables on
S2T.[table] = Tables.TableName)
left join Columns on 
(S2T.[column] = Columns.ColumnName))
left join s2t_source on
(    s2t_source.source_table = S2T.[table])
set s2t.source_id = 1
WHERE s2t_source.source_table = "money";