Sql server 是否可以使用sql在update语句中使用MAX?
我试图在sql语句中使用MAX函数。以下是我试图做的: 大概是这样的:Sql server 是否可以使用sql在update语句中使用MAX?,sql-server,tsql,Sql Server,Tsql,我试图在sql语句中使用MAX函数。以下是我试图做的: 大概是这样的: UPDATE MainTable SET [Date] = GETDATE() where [ID] = Max 我知道这是错误的,特别是当我把where条件放在同一条语句中,但无法找出如何使用max和update。谢谢单向 UPDATE MainTable SET [Date] = GETDATE() where [ID] = (SELECT MAX([ID]) FROM Mai
UPDATE MainTable
SET [Date] = GETDATE()
where [ID] = Max
我知道这是错误的,特别是当我把where条件放在同一条语句中,但无法找出如何使用max和update。谢谢单向
UPDATE MainTable
SET [Date] = GETDATE()
where [ID] = (SELECT MAX([ID]) FROM MainTable)
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
这很好,但我还有一个问题。。。为什么Get Date()函数不返回时间戳?它只返回日期。我想知道你最好在论坛上把这个问题作为一个新问题来问。我不知道如何将DateTime字段设置为时间戳。甚至不知道这是否可能。
UPDATE MainTable
SET [Date] = GETDATE()
WHERE [ID] = (SELECT MAX(your column) FROM yourtable)