我正在尝试在40个表中的UNION 25个字段,这些字段来自10个不同的数据库。
当我尝试将它们组合在一起时,我收到了以下错误:
使用UNION,INTERSECT或EXCEPT运算符组合的所有查询都必须 在目标列表中有相同数量的表达式。
识别哪些字段的格式不同的最快方法是什么,或者是否有另一种方法可以使用SAS中的“强制”命令对这些表进行UNION。
我目前正在使用SQL Server 2014.
答案 0 :(得分:1)
可能最快的方法是使用information_schema.columns
。例如,如果您对每个表使用select *
,那么您可以通过计算列出现的表来获取有问题的列:
select column_name, count(*)
from information_schema.columns
where table_schema = @schema and
table_name in ( . . . )
group by column_name
having count(*) <> 40;
我会注意到,为此目的使用select *
表示数据库设计不佳。而不是具有相同格式的多个表,您应该有一个包含所有组合数据的表。