我有一個四列的表。當有重複的開始時間值時,我需要顯示具有最新(最新)插入值的行。在下面的示例中,前兩行具有相同的開始時間值。我想顯示插入值爲'2016-02-07 10:45:00'的行,因爲它具有重複行的更新(更新)日期和時間。我需要這整個表不只一行。先謝謝你。我很困難。基於第二個字段的SQL重複行
回答
使用ROW_NUMBER可能是最簡單的方法。
SELECT *
FROM (SELECT *,
ROW_NUMBER() OVER (PARTITION BY DriverID,StartTime ORDER BY InsertTS DESC) RowNum
FROM MyTable
) t
WHERE RowNum = 1
這也會起作用,但我會好奇它將如何與自我加入選項進行比較。可能差不多相同 –
我還沒有嘗試過你的具體例子。我會在一分鐘內。但是我嘗試了一些類似的東西,發生了什麼事情是我在重複不存在時丟失了這一行。就像那行不包括在內。 –
將'Activity'添加到'PARTITION BY'子句。 –
你可以做這樣的事情:
SELECT DriverID
,Activity
,StartTime
,MAX(InsertTS) as InsertTS
,MAX(Duration) as Duration
FROM TableName
GROUP BY DriverID, Activity, StartTime
這假設持續時間會比較長,當有重複。如果不是這種情況,您可以將其用作自加入:
SELECT t1.*
FROM TableName t1
INNER JOIN (
SELECT DriverID
,Activity
,StartTime
,MAX(InsertTS) as InsertTS
FROM TableName
GROUP BY DriverID, Activity, StartTime) t2
ON t1.DriverID = t2.DriverID
AND t1.Activity = t2.Activity
AND t1.StartTime = t2.StartTime
AND t1.InsertTS = t2.InsertTS
我嘗試了第一個查詢,它看起來像是有效的。我的下一個問題是如果第一行的持續時間更長,那麼該怎麼辦(儘管它不應該是)。現在嘗試第二個查詢。 –
在這種情況下,我可能會使用@ JamieD77的建議。但任何一個人都應該工作。 –
一個CTE和Windowed functions可以讓這個更清潔。
WITH [Expanded] AS (
SELECT
DriverID
,Activity
,StartTime
,InsertTS
,Duration
,MAX(InsertTS) OVER (PARTITION BY DriverID, Activity, StartTime) as InsertTS_Max
,MAX(Duration) OVER (PARTITION BY DriverID, Activity, StartTime) as Duration_Max
FROM TableName
)
SELECT *
FROM [Expanded]
WHERE
InsertTS = InsertTS_Max
作爲一個註釋,如果你有多個記錄具有'R MAX_NUMBER()'過濾的'MAX'值,或者按照時間排序的主鍵做'MAX'。 –
- 1. 基於第二個表的字段的Django反向外鍵
- 2. MySQL的總和一個字段基於第二個「普通」字段
- 3. 基於第二個表字段值的MySQL質量表更新
- 4. 基於第二個字段值的MySQL SELECT
- 5. 刪除基於HistoryID的SQL重複字段
- 6. awk中刪除基於重複字段
- 7. 找到第二個字重複
- 8. 添加第二個自動增加字段,並允許重複
- 9. sql重複字段
- 10. MySQL的刪除重複在一列中,基於第二列
- 11. 基於2個字段的SQL排序
- 12. SQL:基於1個字段的不同
- 13. 基於字段值的乘法重複行
- 14. 選擇基於在每月的第一個字段值的行SQL
- 15. 如何基於在第一個字段中輸入的值自動更改或填充第二個字段?
- 16. 基於非重複字段從表中刪除重複項
- 17. 基於三個字段和兩個表刪除重複數據
- 18. mySQL:如何識別基於四個字段的重複項
- 19. 基於第二查詢結果標記行的SQL查詢
- 20. 的LinearLayout - 使基於第二
- 21. 不同的行 - 基於兩個字段
- 22. 根據第一個字段匹配行併合並第二個字段
- 23. SQL - 你如何聚合基於另一個字段的字段
- 24. 基於另一個字段設置的SQL字段
- 25. 腳本 - 複製行和第二行如果第二行有一個字符串
- 26. 重複行基於日期
- 27. 基於多個子錶行的SQL更新父表字段
- 28. 發佈第二個重複表中的
- 29. 重複行的子字段
- 30. 複製,uuid字段作爲主鍵,基於行的複製
歡迎來到StackOverflow。通常最好將數據上的文本顯示在圖像上,並且最好顯示您迄今嘗試的查詢。 –
使用[ROW_NUMBER](https://msdn.microsoft.com/zh-CN/library/ms186734.aspx) –
哦。對於那個很抱歉。我以前只問過其他問題。我不必非常執行SQL,並且卡住了。如果有幫助,我可以找到我已經試過的東西並粘貼在這裏。 –