2017-05-08 10 views
0

レコードを同じテーブルにコピーするのに問題がありますが、異なる値と2つの条件に基づいています。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 Username =を使用すると、クエリが2回実行されるたびにレコードの数が増えます。

サンプル日:

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()'関数を。 –

+0

私はいくつかのテーブルデザインの変更を考えてみましょう。同じユーザー名、名字、姓、場所の値を何度も何度も繰り返し保存するのはなぜですか? – jarlh

+1

サンプルデータと希望の結果を提供した場合、あなたの質問は(私にとっては)もっと意味があります。最初の段落と最後の段落の2番目は矛盾しているようです。 –

答えて

0

私はここで何かが欠けていない限り、あなたは単にorder bytop 1を使用することができます:あなたのSELECTでの代わりにCURRENT_TIMESTAMPの

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

関連する問題