【发布时间】:2012-12-12 19:02:23
【问题描述】:
我正在尝试获得 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 fields 有 3 个表?
编辑:正如 RichardTheKiwi 在下面指出的,Access 正在汇总 UNION 链中每个 SELECT 查询的字段计数,这意味着我的 3 个表超过了 255 个字段的最大值。因此,我需要像这样编写查询:
select * from table1
union all
select * from
(select * from table2
union all
select * from table3)
效果很好。
【问题讨论】:
-
UNIONed 的表需要具有相同数量的字段,并且它们应该具有相同的顺序和相同的类型.. -
@sigil 如果您共享 3 个表的架构,这将非常有助于解决您的问题。不管怎样,Gaby aka 建议这对工会来说真的很重要
-
@Gabyakagpetrioli 它们确实具有相同数量的字段、相同的顺序和相同的类型。当我将任何两张桌子配对时,
UNION工作正常。只是当我做 3 个表时它失败了。 -
为什么这有 97 列,你的数据库听起来很可怕。此外,这是一个仅使用 * 选择的 3 个表的小提琴:sqlfiddle.com/#!3/7c8d0/2
-
@sigil 评论您的编辑:如果前两个表(表 1 和表 2)有超过 255 个字段,则会给出相同的错误。所以你需要在你的联合中拥有少于 128 个字段