我有28个固定宽度的文件,我分解并导入到SQL中。为了方便起见,我将其称为industry1 to industry28。从excel中的整体检查中,我发现有1257个重复,共38,700个行。重复项将以某种随机的方式出现。
表,行业,有28个字段,其中有9个字段的复合主键。重复项是整行(全部28个字段)。
当我尝试使用UNION ALL(下面的示例)时,它只删除了28个重复项。有人可以解释为什么会这样吗?
Select field1, field2...from industry1
UNION ALL
Select field1, field2...from industry2
UNION ALL
Select field1, field2...from industry3
... and so on
答案 0 :(得分:1)
如果您希望从查询中删除重复的行,则应使用UNION
而不是UNION ALL
。 UNION
基本上为您提供了DISTINCT
结果集,如果您不介意重复或想要稍快一点的执行速度,那么UNION ALL
将是更好的选择。
来自Google:
UNION ALL命令等于UNION命令,但UNION ALL选择所有值。 Union和Union all之间的区别在于Union all不会消除重复的行,而只是从所有适合查询细节的表中提取所有行并将它们组合成一个表。