SQLステートメントでMAX関数を使用しようとしています。これが私がやろうとしていることです:このようなもの:
UPDATE MainTable
SET [Date] = GETDATE()
where [ID] = Max
これは特に where 条件を入れた場所で間違っていることはわかっていますが、同じステートメントで max と update を使用する方法がわかりません。ありがとう
SQLステートメントでMAX関数を使用しようとしています。これが私がやろうとしていることです:このようなもの:
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 年では、変数の宣言と割り当てを 2 つのステップで行う必要があります。
共通テーブル式を使用することもできます
;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
UPDATE MainTable
SET [Date] = GETDATE()
WHERE [ID] = (SELECT MAX(your column) FROM yourtable)