2017-05-08 51 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

相关问题