结果重复

时间:2008-09-23 08:43:49

标签: sql sql-server

我正在SQL server2005中编写一个查询。这会在结果中返回一个重复的行。我可以用特定列作为密钥来消除这种重复吗?

6 个答案:

答案 0 :(得分:9)

您可以使用DISTINCT关键字消除完整的重复行。如果某个键列是重复的,但其余列不是,则必须使用聚合函数和GROUP BY子句向SQL Server说明您想要返回的数据。

答案 1 :(得分:6)

SELECT DISTINCT将消除重复的行。

答案 2 :(得分:3)

可以使用SELECT DISTINCT来消除重复项,正如其他评论中所建议的那样,它现在可能运行得很好,但您可能会乞求将来遇到麻烦。如果你不能在没有SELECT DISTINCT的情况下得到一个独特的结果,那么你的数据库模型已经被非规范化了太多,你的查询会因为检索然后消除大量的重复而陷入困境。 (但是,当然,规范化现有数据库模式很少是微不足道的......)

如果没有关于架构和查询的更多信息,则无法确定SELECT DISTINCT是否是可接受的解决方法,或者是否只有更好的连接语句。

答案 3 :(得分:0)

您的结果可能包含关联数组和数字数组。

答案 4 :(得分:0)

如果您只想要一列:

SELECT DISTINCT MyColumn FROM MyTable;

如果您想要各种列,可能返回最大值或总和,请尝试对其进行分组:

SELECT MyFirstColumn, MySecondColumn, MAX(SomeDate) AS MaxDate, SUM(Amount) AS TotalAmount 
FROM MyTable 
GROUP BY MyFirstColumn, MySecondColumn;

答案 5 :(得分:0)

正如您在评论中指出的那样,您正在使用存储过程。处理此情况的一种方法是创建一个使用存储过程填充的临时表。然后从临时表中选择结果,并使用SELECT DISTINCT或GROUP BY修剪重复项。