2013-01-03 49 views
4

我想在sql语句中使用MAX函数。这里就是我想要做的事: 是这样的:是否有可能在更新语句中使用SQL使用MAX?

UPDATE MainTable 
     SET [Date] = GETDATE() 

     where [ID] = Max 

我知道这是不对的专门这里我把WHERE条件,但无法弄清楚如何使用max和更新在同一语句。感谢

回答

16
UPDATE MainTable 
    SET [Date] = GETDATE() 
where [ID] = (SELECT MAX([ID]) FROM MainTable) 
5

一种方式

DECLARE @MaxID INT = (select MAX(id) FROM MainTable) 

UPDATE MainTable 
     SET [Date] = GETDATE() 
     where [ID] = @MaxID 

这是SQL 2008的语法,在2005年你需要做的变量declaraion和分配分两步

你也可以使用一个公用表表达

;WITH cte 
AS (
SELECT TOP 1 * FROM MainTable 
ORDER BY ID DESC 

) 

UPDATE cte SET [Date] = GETDATE() 

实施例可以运行

CREATE TABLE testNow(id int) 
INSERT testNow VALUES(1) 
INSERT testNow VALUES(2) 

;WITH cte 
AS (
SELECT TOP 1 * FROM testNow 
ORDER BY ID DESC 

) 

-- id with 2 will become 5 
UPDATE cte SET ID = 5 

SELECT * FROM testNow 

输出

1 
5 
+0

感谢大家。它工作 – user1858332

1
UPDATE MainTable 
SET [Date] = GETDATE() 
WHERE [ID] = (SELECT MAX(your column) FROM yourtable) 
+0

它工作正常,但我有一个其他问题...为什么Get Date()函数不返回时间戳?它只返回日期。我希望看到时间戳 – user1858332

+0

您最好在论坛上提出这是一个新问题。我不知道如何将DateTime字段设置为时间戳。甚至不知道是否有可能。 – Melanie

相关问题