您知道如何根据2种排序条件更新1条记录吗?
我在表A中:
id | date | boolean | data
-------------------------------------------
001 | 11.13.2017 | 0 | value 1
001 | 09.13.2017 | 1 | value 2
001 | 01.01.2017 | 0 | value 0
002 | 06.15.2017 | 1 | value 3
003 | 04.23.2017 | 1 | value 4
003 | 12.13.2017 | 0 | value 5
我想通过id,根据最近的日期更改布尔值。
例如:
id | date | boolean | data
-------------------------------------------
001 | 11.13.2017 | 1 | value 1
001 | 09.13.2017 | 0 | value 2
001 | 01.01.2017 | 0 | value 0
谢谢
答案 0 :(得分:0)
- 更新最近ID的布尔值
UPDATE TableA SET boolean = 1 WHERE date = SELECT date FROM(SELECT ROW_NUMBER() OVER(PARTITION BY id ORDER BY date DESC) AS RowNum,date FROM TableA) AS TableB
WHERE RowNum = 1
答案 1 :(得分:0)
UPDATE a
SET a.boolean='True'
FROM tableA AS a
INNER JOIN (
SELECT b.id, max(b.date) AS 'LatestDate'
FROM tableA AS b
GROUP BY b.id
) as c
ON a.id=c.id AND a.date=c.LatestDate;
以下是SQL Fiddle链接:http://sqlfiddle.com/#!6/bfb3e8/2
答案 2 :(得分:0)
您可以使用row_number找到每个ID的最新记录。您需要发出2个UPDATE语句,一个用于将最新记录更新为1,另一个用于将其他记录重新设置为0.
希望下面的查询能够回答您的问题。如果使用的是真正的布尔列,请将值更改为True和False。
foo2