如何根据特定行组的最大日期更新表

时间:2013-09-15 05:29:16

标签: sqlite

我有这个表,我想根据另一个列的最大值更新其中一个列。

例如:

Table with the following columns
Id  title  startDate   groupId    endDate

我想基本上更新所有行的endDate,在其中我将用具有相同groupId的所有行中的startDate的最大值替换endDate

例如

表可以初始化

1 ,grp1, 2013-09-01 14:45, 1, ''
2 ,grp1, 2013-10-01 15:45, 1, ''
3 ,grp1, 2013-11-01 16:45, 1, ''       <----Row with the maximum (most future startDate)
4 ,grp2, 2013-09-01 14:45, 2, ''
5 ,grp2, 2013-10-01 14:45, 2, ''       <----Row with the maximum (most future startDate)
6 ,grp2, 2013-08-01 14:45, 2, ''

所以我希望能够运行查询,使Table看起来像

1 ,grp1, 2013-09-01 14:45, 1, 2013-11-01 16:45
2 ,grp1, 2013-10-01 15:45, 1, 2013-11-01 16:45
3 ,grp1, 2013-11-01 16:45, 1, 2013-11-01 16:45
4 ,grp2, 2013-09-01 14:45, 2, 2013-10-01 14:45
5 ,grp2, 2013-10-01 14:45, 2, 2013-10-01 14:45
6 ,grp2, 2013-08-01 14:45, 2, 2013-10-01 14:45

如何在“SqlLite”查询中实现?

1 个答案:

答案 0 :(得分:0)

您可以使用子查询查找相应的值:

UPDATE MyTable
SET endDate = (SELECT MAX(T2.startDate)
               FROM MyTable AS T2
               WHERE T2.groupId = MyTable.groupId)