PostgreSQL中关联两表并按规则更新comments表stage字段
更新说明
我已更新fiddle中的UPDATE语句,虽可运行但未得到预期结果,目前暂无解决思路
核心问题
无法获取comments.created_at之前或等于该时间的最后一个有效statuses.type
表结构与关联规则
现有comments和statuses两张表,需按candidate_id关联;两表中candidate_id不唯一,但同一候选人的statuses.type不会重复。
更新规则
需按以下规则更新comments表的stage字段:stage字段值为AT_CALLCENTER或AT_SITE,由关联得到的statuses.type决定,映射规则如下:
AT_SITE: [ 'PENDING_SITE', 'CONSENTED', 'RANDOMIZED', 'REJECTED_SITE', 'REJECTED_CONSENTED', 'REJECTED_RANDOMIZED', ], AT_CALLCENTER: ['PENDING_CALLCENTER', 'REJECTED_CALLCENTER'],
需匹配评论创建时间(comments.created_at)之前或等于该时间的最后一个statuses.type,再根据上述规则确定stage值。
预期更新结果
| id | candidate_id(候选人ID) | user_id(用户ID) | content | created_at | updated_at | deleted_at | stage |
|---|---|---|---|---|---|---|---|
| 1 | 329 | 0 | Hello comment!!! | 2019-04-16 08:24:14.916743+01 | 2019-04-16 08:25:33.635+01 | 2019-04-16 08:25:33.635+01 | AT_CALLCENTER |
| 2 | 324 | 0 | test | 2019-04-16 13:41:09.846586+01 | 2019-04-16 13:41:09.846586+01 | null | AT_SITE |
| 3 | 82 | 56 | This is a comment | 2019-04-17 12:49:48.526793+01 | 2019-04-17 12:49:48.526793+01 | null | AT_SITE |
| 4 | 324 | 0 | Cool! | 2019-04-24 09:39:20.233621+01 | 2019-04-24 09:39:20.233621+01 | null | AT_SITE |
| 214 | 11-0029 | 0 | i tried the candidate | 2019-06-24 15:15:23.775236+01 | 2019-06-24 15:15:23.775236+01 | null | AT_CALLCENTER |
上述表格为关联两表并更新stage字段后的预期结果,目前暂无可行实现方案,期望得到正确的SQL语句以达成需求。
内容的提问来源于stack exchange,提问作者Jakub
相关产品推荐
相关产品推荐

