在SQL中,我无法决定是使用Union还是Union All 在Union Union中使用Group By消除重复记录?或者建议使用Union with Group By
答案 0 :(得分:0)
答案有点微妙。据我了解,UNION将删除您的第一个查询与之后运行的后续查询之间的重复项。但是,如果您的第一个数据集包含重复项,我相信这些数据集不会被删除。
当您尝试聚合某些数据时,会更多地使用分组依据。例如,使用Sum(),Min()Max(),这种类型的东西。如果您没有进行任何聚合,则不需要()组。如果您在联合中的一个或多个查询中进行聚合,则需要UNION和Group By。
最后,如果你想要消除所有重复项,并且你在第一个查询中没有任何聚合但是你看到重复,你也可以在第一个查询上抛出一个不同的,这将从你的初始数据集中消除它们同样。
答案 1 :(得分:0)
GROUP BY将消除每个子查询中的重复项,但UNION将消除子查询中的重复项。例如,这只会在ClientList1和ClientList2表中提供唯一的名称:
SELECT [Name] FROM ClientList1 GROUP BY [Name]
UNION
SELECT [Name] FROM ClientList2 GROUP BY [Name]
但这将包括BOTH表中存在的名称:
SELECT [Name] FROM ClientList1 GROUP BY [Name]
UNION ALL
SELECT [Name] FROM ClientList2 GROUP BY [Name]
答案 2 :(得分:0)
在UNION
和UNION ALL
之间进行选择的基础是UNION
需要更长时间,但可以删除一些重复内容。如果您希望不会有UNION
将删除的重复项,或者可以在输出中包含这些重复项,请使用UNION ALL