我想更新我的父表列,如果我的子表列具有单个ParentId的所有相同的值。如何基于子表中的多个值更新单个父表
T1 - 家长
| ParentId | StatusId |
|---------------------|------------------|
| 1 | 1 |
|---------------------|------------------|
| 2 | 1 |
|---------------------|------------------|
T2 - 儿童
| ChildId | ParentId | StatusId |
|---------------------|------------------|------------------|
| 1 | 1 | 0 |
|---------------------|------------------|------------------|
| 2 | 1 | 0 |
|---------------------|------------------|------------------|
| 3 | 1 | 0 |
|---------------------|------------------|------------------|
| 4 | 2 | 1 |
|---------------------|------------------|------------------|
| 5 | 2 | 0 |
|---------------------|------------------|------------------|
如果T2状态列有所有0对的ParentId 1然后设置在T1状态0,否则,如果有一个1状态为T2中的任何ParentId,然后将T1中的状态设置为1或者什么也不做。
更新语句之后所需的结果:
T1 - 家长
| ParentId | StatusId |
|---------------------|------------------|
| 1 | 0 |
|---------------------|------------------|
| 2 | 1 |
|---------------------|------------------|
T2 - 儿童
| ChildId | ParentId | StatusId |
|---------------------|------------------|------------------|
| 1 | 1 | 0 |
|---------------------|------------------|------------------|
| 2 | 1 | 0 |
|---------------------|------------------|------------------|
| 3 | 1 | 0 |
|---------------------|------------------|------------------|
| 4 | 2 | 1 |
|---------------------|------------------|------------------|
| 5 | 2 | 0 |
|---------------------|------------------|------------------|
我知道或许可以使用更新做这样的事情,并也许是一个while循环,但我不太清楚如何构造它。任何帮助表示赞赏。
你尝试过什么到目前为止做些什么呢? – Eric
UPDATE PT SET PT.StatusId = CASE WHEN PT.StatusId = 1 THEN 1 WHEN CT.StatusId IN(0,1)THEN 1 END FROM ParentTable PT JOIN ChildTable CT ON PT.ParentID = CT.ParentId – CursiosAsEver69
作为一般规则,尽量避免while循环。 –