我试图得到3个表的UNION,每个表有97个字段。我尝试了以下方法:
select * from table1 union all select * from table2 union all select * from table3
这给我一个错误信息:
Too many fields defined.
我还尝试从第一个表中明确选择所有字段名称(为简洁起见添加了省略号):
select [field1],[field2]...[field97] from table1 union all select * from table2 union all select * from table3
当我只有UNION两个表时,它可以正常工作:
select * from table1 union all select * from table2
由于该查询,我最终不应拥有超过97个字段;两张桌子的UNION只有97个。为什么我要买Too many fields3张桌子?
Too many fields
编辑:正如RichardTheKiwi在下面指出的那样,Access正在对UNION链中每个SELECT查询的字段计数求和,这意味着我的3个表超过了255个字段的最大值。因此,我需要这样编写查询:
select * from table1 union all select * from (select * from table2 union all select * from table3)
效果很好。
看来,要跟踪的字段数(限制为255)是根据UNION ALL的所有部分计算的。因此3 x 97 = 291,这是多余的。您可能会创建一个由UNION(共2个部分)组成的查询,然后再创建一个包含第3个部分的查询。