使用从其他表聚合的数字更新表中的字段

时间:2013-05-27 21:30:47

标签: sql postgresql

我有一个包含会话ID的Web日志条目的日志表。我还有一个会话表,总结了上表中的会话。所以我必须运行一些更新SQL语句,但我不知道如何为名为“session_length”的字段构造SQL语句。在这个领域,我希望分配该特定会话中的事件数量。

假设我有以下日志表:

| Session ID | Timestamp | Action | ...
| 1          | 00:00:00  | get | ...
| 2          | 00:00:00  | get | ...
| 1          | 00:00:01  | get | ...
| 1          | 00:00:02  | get | ...
| 2          | 00:00:02  | get | ...

在会话表中,我希望session_length字段具有以下值:

| Session ID | session_length | ...
| 1          | 3              | ...
| 2          | 2              | ...

我不确定这是否可以通过单个查询完成,但我想看看是否可以通过使用update的单个SQL查询来完成。特别是,我在AWS RedShift中使用PostgresSQL。

1 个答案:

答案 0 :(得分:1)

您可以使用update语句中的相关子查询执行此操作:

update sessions
    set session_length = (select count(*)
                          from log
                          where log.sessionid = sessions.sessionid
                         )