UNION ALL查询:"定义的字段太多"

sig*_*gil 5 sql ms-access

我正在尝试获得3个表的UNION,每个表有97个字段.我尝试过以下方法:

select * from table1
union all
select * from table2
union all
select * from table3
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误信息:

Too many fields defined.
Run Code Online (Sandbox Code Playgroud)

我还尝试从第一个表中明确选择所有字段名称(为简洁起见,添加了省略号):

select [field1],[field2]...[field97] from table1
union all
select * from table2
union all
select * from table3
Run Code Online (Sandbox Code Playgroud)

当我只有这样的UNION两个表时,它工作正常:

select * from table1
union all
select * from table2
Run Code Online (Sandbox Code Playgroud)

作为此查询的结果,我最终不应该有超过97个字段; 两桌U​​NION只有97.所以我为什么Too many fields要用3张牌?

编辑:正如RichardTheKiwi在下面所说,Access正在总结UNION链中每个SELECT查询的字段数,这意味着我的3个表超过了255个字段的最大值.所以相反,我需要像这样编写查询:

select * from table1
union all
select * from
(select * from table2
union all
select * from table3)
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.

Ric*_*iwi 11

看起来被跟踪的字段数(限制255)将计入UNION ALL的所有部分.所以3 x 97 = 291,这是过量的.您可以创建一个查询作为UNION所有2个部分,然后是另一个查询与第3部分.