0

別の最大値に基づいてその列の1つを更新したいこのテーブルがあります。

例えば:

Table with the following columns
Id  title  startDate   groupId    endDate

基本的に、同じ groupId を持つすべての行の中で endDate を 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, ''

だから私はクエリを実行できるようにしたいので、テーブルは次のようになります

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」クエリでこれをどのように達成できますか?

4

1 に答える 1

0

サブクエリを使用して、対応する値を検索できます。

UPDATE MyTable
SET endDate = (SELECT MAX(T2.startDate)
               FROM MyTable AS T2
               WHERE T2.groupId = MyTable.groupId)
于 2013-09-15T08:39:14.540 に答える