我想更新我的父表列,如果我的子表列具有單個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循環。 –