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 年では、変数の宣言と割り当てを 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
于 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 に答える