2017-05-08 41 views
0

我無法將記錄複製並插入到同一個表中,但具有不同的值並基於兩個條件。將具有2個不同值的行復制到同一個表中

我至今:

INSERT INTO Userdetails 
(ID, Username, Firstname, Surname, Location, TimeAs) 
SELECT ID, Username, Firstname, Surname, Location, CURRENT_TIMESTAMP 
FROM 
Userdetails where Username = 'Harvard'; // and the latest date of the record 

當位置更新,新的時間戳的新紀錄和位置與舊記錄的所有細節,我所要做的是(名字等。 )被插入到表格中,但保留了舊的記錄。

如果我只是使用WHERE用戶名=我將每次執行查詢的記錄數乘以2x。

樣品日期:

Username | Firstname | Surname | Location | Last Updated 

Harvard David  Beckham London 2017-05-08 12:11:00 

Harvard David  Beckham Turkey 2017-05-08 12:14:00 

Stanton John  Smith  Paris  2017-05-08 11:24:00 
// This would be the result of the query, With a different timeStamp and Location but keeping the old record 
Harvard David  Beckham Hong Kong 2017-05-08 12:20:00 

我想什麼它做的是複製的最新記錄,其中用戶名=「哈佛」,但也要看使用最新的時間,而不僅僅是用戶名,因爲這會導致2記錄不只是我想要的1。

任何幫助表示讚賞。

+0

使用'GETDATE()'函數,而不是CURRENT_TIMESTAMP在你的SELECT。 –

+0

我會考慮一些表設計更改。爲什麼一遍又一遍地存儲相同的用戶名,名字,姓氏,位置值? – jarlh

+1

如果您提供了樣本數據和期望的結果,您的問題對我來說會更有意義。第一段和倒數第二段似乎是矛盾的。 –

回答

0

除非我失去了一些東西,你可以簡單地使用top 1order by

INSERT INTO Userdetails 
(ID, Username, Firstname, Surname, Location, TimeAs) 
SELECT TOP 1 ID, Username, Firstname, Surname, Location, CURRENT_TIMESTAMP 
FROM Userdetails 
WHERE Username = 'Harvard' 
ORDER BY TimeAs DESC; 
+0

謝謝你的工作。 – QFuullY

相關問題