2008-09-23 176 views
1

我在SQL server2005中編寫查詢。這會在結果中返回重複的行。我可以通過特定的欄目來消除這種重複嗎?重複結果

回答

9

您可以使用DISTINCT關鍵字消除完整的重複行。如果有一些重複列是重複的,但其餘列不是,那麼您將不得不使用聚合函數和GROUP BY子句向SQL Server解釋您希望返回的數據。

0

您的結果可能包含關聯數組和數組數組。

6

SELECT DISTINCT將消除重複的行。

0

如果你只是想一列:

SELECT DISTINCT MyColumn FROM MyTable; 

如果你想各種欄目,最大值或總和可能回來,嘗試分組它:

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

具有不同的多列也應該可以。只要不需要集合操作。 – 2008-09-23 08:54:20

3

可以使用SELECT DISTINCT以消除重複,正如其他意見所建議的那樣,目前它可能運行得足夠好,但你可能會乞求未來的麻煩。如果沒有SELECT DISTINCT,如果你不能得到唯一的結果,那麼你的數據庫模型已經非規範化得太多了,而且你的查詢可能會通過檢索然後刪除大量重複項而陷入困境。 (然而,當然,規範化現有的數據庫模式很少是微不足道的......)

沒有關於模式和查詢的更多信息,無法判斷SELECT DISTINCT是否是可以接受的解決方法,或者是否只有更好的聯接聲明。

0

正如您在評論中指出的那樣,您正在使用存儲過程。處理這種情況的一種方法是創建一個使用存儲過程填充的臨時表。然後從臨時表中選擇結果並使用SELECT DISTINCT或GROUP BY修剪重複項。