1
我現在有一個表,看起來像這樣:這個結果可以通過遞歸cte來實現嗎?
| A_URN | B_URN | ID |
|-------|-------|----|
| 101 | 901 | 0 |
|-------|-------|----|
| 102 | 901 | 0 |
|-------|-------|----|
| 101 | 902 | 0 |
|-------|-------|----|
| 102 | 902 | 0 |
|-------|-------|----|
| 201 | 902 | 0 |
|-------|-------|----|
| 201 | 903 | 0 |
|-------|-------|----|
| 202 | 903 | 0 |
|-------|-------|----|
| 301 | 904 | 0 |
|-------|-------|----|
| 302 | 904 | 0 |
|-------|-------|----|
| 301 | 905 | 0 |
|-------|-------|----|
| 302 | 905 | 0 |
|-------|-------|----|
| 303 | 905 | 0 |
|-------|-------|----|
| 101 | 906 | 0 |
我需要添加一個標識符,組中的所有相關項目放在一起。
例如A_URN 101連接到B_URNs 901,902,以及906和 B_URNs 901,902和906還包含A_URNs 102和201
A_URN 201也被連接到B_URN 903等等,等等
最終的結果應該是這個樣子:
| A_URN | B_URN | ID |
|-------|-------|----|
| 101 | 901 | 1 |
|-------|-------|----|
| 102 | 901 | 1 |
|-------|-------|----|
| 101 | 902 | 1 |
|-------|-------|----|
| 102 | 902 | 1 |
|-------|-------|----|
| 201 | 902 | 1 |
|-------|-------|----|
| 201 | 903 | 1 |
|-------|-------|----|
| 202 | 903 | 1 |
|-------|-------|----|
| 301 | 904 | 2 |
|-------|-------|----|
| 302 | 904 | 2 |
|-------|-------|----|
| 301 | 905 | 2 |
|-------|-------|----|
| 302 | 905 | 2 |
|-------|-------|----|
| 303 | 905 | 2 |
|-------|-------|----|
| 101 | 906 | 1 |
我寫了實現這一使用while()循環查詢,但都被要求返工它變成一個遞歸CTE。 我試過了,但總是最終需要在遞歸成員中使用MIN或GROUP BY,這是不允許的。
使用遞歸查詢有可能得到這種結果嗎?
您可以發佈與while循環的解決方案? – artm
您使用的是什麼RDBMS(MSSQL,Oracle)? – valex