0

次をtbl_vdc含むテーブルがあります。

id,zone_id, district_id, vdc_id, details

ここでは、各ゾーンに異なる地区があり、各地区には異なる vdc があります。

zone_id |  district_id | vdc_id | details
1       |  1           | 1      | pyro   
1       |  1           | 2      | cuit  
1       |  1           | 3      | aden  

1       |  2           | 1      | rtyo   
1       |  2           | 2      | cyan 


2       |  1           | 1      | lity   
2       |  1           | 2      | pais  
2       |  1           | 3      | yeno  
2       |  1           | 4      | zige 


14       |  75           | 1      | moie   
14       |  75           | 2      | hode  
14       |  75           | 3      | gano  

など、最大 14 のゾーンと 75 の地区。

その地区に必要なN/A地区ごとに 1 つの vdc_details を追加する必要があります。したがって、新しいテーブルは次のようになります。vdc_idmax(vdc_id)+1

zone_id |  district_id | vdc_id | details

1       |  1           | 1      | pyro   
1       |  1           | 2      | cuit  
1       |  1           | 3      | aden   
1       |  1           | 4      | NA 

1       |  2           | 1      | rtyo   
1       |  2           | 2      | cyan 
1       |  2           | 3      | NA 


2       |  1           | 1      | lity   
2       |  1           | 2      | pais  
2       |  1           | 3      | yeno  
2       |  1           | 4      | zige 
2       |  1           | 5      | NA 

14       |  75           | 1      | moie   
14       |  75           | 2      | hode  
14       |  75           | 3      | gano 
14       |  75           | 4      | NA 

14 のゾーンと 75 の地区の場合、データを 75 回追加する必要がありますが、これは時間がかかり、論理的なアプローチではありません。

クエリを使用して動的に追加する方法はありますか?

4

1 に答える 1

2

試す

INSERT INTO tbl_vdc (zone_id, district_id, vdc_id, details)
SELECT zone_id,
       district_id,
       MAX(vdc_id) + 1,
       'N/A'
  FROM tbl_vdc
 GROUP BY zone_id, district_id

出力例:

| ID | ZONE_ID | DISTRICT_ID | VDC_ID | DETAILS |
-------------------------------------------------
|  1 |       1 |           1 |      1 |    pyro |
|  2 |       1 |           1 |      2 |    cuit |
|  3 |       1 |           1 |      3 |    aden |
| 13 |       1 |           1 |      4 |     N/A |
|  4 |       1 |           2 |      1 |    rtyo |
|  5 |       1 |           2 |      2 |    cyan |
| 14 |       1 |           2 |      3 |     N/A |
|  6 |       2 |           1 |      1 |    lity |
|  7 |       2 |           1 |      2 |    pais |
|  8 |       2 |           1 |      3 |    yeno |
|  9 |       2 |           1 |      4 |    zige |
| 15 |       2 |           1 |      5 |     N/A |
| 10 |      14 |          75 |      1 |    moie |
| 11 |      14 |          75 |      2 |    hode |
| 12 |      14 |          75 |      3 |    gano |
| 16 |      14 |          75 |      4 |     N/A |

これがSQLFiddleのデモです

于 2013-05-30T06:04:54.640 に答える