如何在 Access 中对表的所有列进行 UNION ALL

Posted

技术标签:

【中文标题】如何在 Access 中对表的所有列进行 UNION ALL【英文标题】:How can I UNION ALL on all columns of a table in Access 【发布时间】:2016-09-27 19:14:45 【问题描述】:

我有两个具有相同列数 (c.150) 的选择查询,我正在尝试将这两个查询合并:

SELECT * 
FROM query1

UNION ALL

SELECT * 
FROM query2

我收到错误“定义的字段过多”,但我知道 Access 可以处理 255 个字段?鉴于我不想在每个选择查询中写出每个字段名称,有没有一种实用的方法来实现这种联合?

【问题讨论】:

理论上 UNION ALL 不应该是这里的罪魁祸首。你能分别成功地启动你的 2 个查询吗? 如果您的字段数超出 Access 的处理能力,您可能需要将其拆分为多个 UNION 查询。 UNION 查询的所有部分计数:2 * 150 = 300。查看可能的重复项:***.com/questions/13846776/… SQL 代码异味:如果每个表有 120 多列,那么它们几乎肯定没有完全规范化,也就是你有设计缺陷。 【参考方案1】:

正如 Parfait 在他的评论中提到的那样,这个错误是由于 Access 正在将我的每个表的列数计算到限制中而引起的。 150 + 150 > 255 => 定义的字段太多。查看类似问题here。

如果您没有太多数据,另一种方法是将一个写入表并将另一个附加到同一个表中。

【讨论】:

以上是关于如何在 Access 中对表的所有列进行 UNION ALL的主要内容,如果未能解决你的问题,请参考以下文章

使用 ASP.Net 在 SQL 中对表的列值求和时出现异常

在SQL SERVER 中对表不能设置主键

如何在 SQL Redshift 中对表进行分区后比较两列的值

在 asp.net MVC 中对表进行排序

如何在sqlite中对表中的行进行排名?

对表的所有列应用 MAX(LENGTH)