0

我的表:tblTest:

RunID,StartTime, EndTime, Period
1,2013-03-30 18:08:14-04,2013-04-01 10:57:22-04
2,2013-04-03 12:13:10-04,2013-04-03 18:05:34-04
3,2013-04-04 06:02:30-04,2013-04-05 10:42:00-04
4,2013-04-05 10:43:00-04,2013-04-06 13:23:06-04

我正在尝试更新表以计算列期间。我正在使用的查询是:

UPDATE tblTest SET Period = (SELECT strftime('%s',substr(endtime,1,19)) -
                              strftime('%s',substr(starttime,1,19)) From tblTest)

但令我惊讶的是,它从第一行更新了所有具有相同值的期间。我究竟做错了什么?

4

1 回答 1

0

(SELECT ... FROM tblTest)没有条件的子查询WHERE返回表的所有记录。在只需要一个值的上下文中(如在SET表达式中),只使用第一个这样的记录。

您可以直接访问要更新的表的列:

UPDATE tblTest
SET Period = strftime('%s', substr(EndTime,   1, 19)) -
             strftime('%s', substr(StartTime, 1, 19))
于 2013-07-09T19:34:44.530 回答