2016-01-13 58 views
-1

使用SQL Server 2005/2008如果插入的最後一個值(排序方式爲_timestamp)不是相同的值,我想插入一個新行。如果最後一個值不同,則插入SQL語句

例如:

value | timestamp 
100 | "yesterday" 
101 | "today" 

在接下來的操作:

  • 的101的值不應該被插入的,因爲這是最新的值

然而的102的值應插入爲最新值不是這樣的

+0

最後一個值是什麼? 「價值」還是「時間戳」? – SQLChao

+0

獲取最高值,如果你有什麼不同,那麼做插入。 – Chuck

+0

按時間戳排序的最後一個值。所以在我的情況下,最後一個值是100. –

回答

0

爲什麼你不使用那樣的東西?

DECLARE @table TABLE(val INT, [timestamp] DATETIME) 

INSERT INTO @table 
SELECT 100, N'20160112' 
UNION ALL 
SELECT 101, N'20160113' 

SELECT * FROM @table 

INSERT INTO @table 
SELECT 101, N'20160114' 
WHERE 101 <> ISNULL((SELECT TOP 1 val FROM @table 
        ORDER BY timestamp DESC), -1) 

SELECT * FROM @table AS T 
+0

非常感謝。真的很感謝 –

+0

如果數據庫中沒有值,上面的例子不起作用,所以你需要檢查是否爲空。 –

+0

@GrahamMorris我已經更新了我的答案。 – fabulaspb