我正在尝试获得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个字段; 两桌UNION只有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部分.