1
我有一個工作設置,當前從不包含唯一索引的表中選擇記錄。我意識到這可以通過在表格和相關列上放置索引來解決,但在這種情況下,爲了測試目的,我需要刪除索引,然後執行一個選擇,同時刪除基於2列的重複項:sql在兩列上選擇3列和重複數據刪除
SELECT DISTINCT [author], [pubDate], [dateadded]
FROM [Feeds].[dbo].[socialPosts]
WHERE CAST(FLOOR(CAST(dateadded AS float)) AS datetime) >
DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE() - 2), 0)
AND CAST(FLOOR(CAST(dateadded AS float)) AS datetime) <
DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)
這將選擇前一天的所有記錄,我希望根據作者和pubdate重複記錄這些記錄。這可能是一個後期選擇或之前完成,但想法是找出是否可以在選擇內完成。
您實際上是否將'dateadded'存儲爲_float_值?爲什麼不是實際的日期/時間戳值?此外,你應該做下限包容,上限排他的範圍('> - 2'位是offputting)。 'dateadded'和其他列之間的關係如何?可以使用簡單的MAX()嗎? – 2012-07-09 21:09:25
dateadded實際上被存儲爲日期時間...不能確定任何其他方式來使其工作... dateadded是特定記錄的日期,我只需要獲得前一天的總記錄 – vbNewbie 2012-07-10 12:42:14
你不應該需要對存儲的數據做任何事情 - 它已經是「正確的」。離開鑄件(這不能幫助你)。我不確定它是完全'安全'的。你的上限應該沒問題。你的下界應該改爲'dateadded> = DATEADD(DAY,DATEDIFF(DAY,0,GETDATE()) - 1,0)'。 – 2012-07-10 15:37:02