6

我正在尝试在 sql 语句中使用 MAX 函数。这是我正在尝试做的事情:像这样:

UPDATE MainTable
        SET [Date] = GETDATE()

        where [ID] = Max

我知道这是错误的,特别是在我放置 where 条件但无法弄清楚如何在同一语句中使用 max 和 update 的地方。谢谢

4

3 回答 3

24
UPDATE MainTable
   SET [Date] = GETDATE()
 where [ID] = (SELECT MAX([ID]) FROM MainTable)
于 2013-01-03T20:48:55.127 回答
6

单程

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

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

那是SQL 2008的语法,在2005中你需要分两步做变量的声明和赋值

您还可以使用公用表表达式

;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
于 2013-01-03T20:48:58.923 回答
2
UPDATE MainTable
SET [Date] = GETDATE()
WHERE [ID] = (SELECT MAX(your column) FROM yourtable)
于 2013-01-03T20:49:54.617 回答