多对多关联场景下跨表更新Activity表字段的技术问询
更新Activity表ActivityDate字段的需求与问题
需求说明
需要从Status表的StatusDate列更新Activity表的ActivityDate列,规则如下:
- 若Status表中StatusID为
X,则将Activity表中ActivityID为A的ActivityDate设为该StatusID对应的日期01-03-2024 - 若StatusID为
Y,则将Activity表中ActivityID为B和C的ActivityDate设为15-03-2024 - 若StatusID为
Z,则将Activity表中ActivityID为D的ActivityDate设为02-04-2024
Activity表
| ItemID | ActivityID | ActivityDate |
|---|---|---|
| 1 | A | |
| 1 | B | |
| 1 | C | |
| 1 | D |
Status表
| ItemID | StatusID | StatusDate |
|---|---|---|
| 1 | X | 01-03-2024 |
| 1 | Y | 15-03-2024 |
| 1 | Z | 02-04-2024 |
尝试的查询语句
UPDATE Activity set a.ActivityDate= case when s.StatusID='X' AND a.ActivityID='A' THEN s.StatusDate when s.StatusID='Y' AND a.ActivityID in ('B','C') THEN s.StatusDate when s.StatusID='Z' AND a.ActivityID='D' THEN s.StatusDate ELSE a.ActivityDate END from Activity a left join Status s on a.ItemID=s.ItemID
内容的提问来源于stack exchange,提问作者Hussein
相关产品推荐
相关产品推荐

