我正在使用SQL Server 2016.我有一个包含30多列的大表。当我从中提取所需的数据时,偶尔会有重复的行。我想这是因为我没有使用的其中一个列存在一些差异,但就我的目的而言,数据总是相同的。我所做的就是改变
SELECT
[reference], [name], [postcode], [type], [amount]
FROM
[my table]
到
SELECT
[reference], MAX([name]), MAX([postcode]), MAX([type]), MAX([amount])
FROM
[my table]
GROUP BY
[reference]
这可能会导致任何问题吗?是否会大大增加处理时间或潜在错误?
答案 0 :(得分:3)
你的方法很好。更典型的方法是:
SELECT DISTINCT [reference], [name], [postcode], [type], [amount]
FROM [my table] t;
我希望它具有与GROUP BY
相同的性能,但您可以查看。有时,这可能会有不同的优化。
另一种方法是:
SELECT [reference], [name], [postcode], [type], [amount]
FROM (SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY [reference], [name], [postcode], [type], [amount]
ORDER BY (SELECT NULL)
) as seqnum
FROM [my table] t
) t
WHERE seqnum = 1;
您可能希望测试并查看哪种效果更好。