我对SQL不错,但我很难搞清楚这一点。
我有一个名为test
的表,其中包含一个名为key
的字符列和两个名为datetime
和TestTime
的{{1}}列。
我正在尝试编写一个查询来更新所有行,并将LastTestTime
的值设置为同一LastTestTime
的最近一次TestTime
。
以下是我希望如何做到这一点的示例:
key
答案 0 :(得分:2)
这些都没有回答这个问题。提问者想要在每次测试之前的最近测试时间,而不是最近的整体测试时间:
UPDATE test
SET lastTestTime = (SELECT TOP(1) testTime
FROM test tt
WHERE test.key = tt.key AND tt.TestTime < test.TestTime
ORDER BY testTime DESC
)
答案 1 :(得分:1)
UPDATE t
SET LastTestTime = t2.TestTime
FROM
Test t JOIN
Test t2
ON t2.[Key] = t.[Key]
AND t2.TestTime = (
SELECT MAX(t3.TestTime)
FROM Test t3
WHERE
t3.TestTime < t.TestTime
AND t3.[Key] = t.[Key]
)
答案 2 :(得分:0)
UPDATE test
SET lastTestTime =
(SELECT TOP(1) testTime
FROM test tt
WHERE test.key = tt.key
ORDER BY testTime DESC)