SQL Update查询

时间:2012-05-10 15:13:33

标签: sql-server

我对SQL不错,但我很难搞清楚这一点。

我有一个名为test的表,其中包含一个名为key的字符列和两个名为datetimeTestTime的{​​{1}}列。

我正在尝试编写一个查询来更新所有行,并将LastTestTime的值设置为同一LastTestTime的最近一次TestTime

以下是我希望如何做到这一点的示例:

key

3 个答案:

答案 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)