1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
| SQL> CREATE TABLE usr as
2 select rownum as id,
3 'nom_'||mod(rownum,40) as nom,
4 'prenom_'||mod(rownum,15) as prenom
5 from dual
6 connect by level <= 50
7 /
Table created.
SQL> select * from usr
2 /
ID NOM PRENOM
---------- --------------- -----------------------------------------------
1 nom_1 prenom_1
2 nom_2 prenom_2
3 nom_3 prenom_3
4 nom_4 prenom_4
5 nom_5 prenom_5
6 nom_6 prenom_6
7 nom_7 prenom_7
8 nom_8 prenom_8
9 nom_9 prenom_9
10 nom_10 prenom_10
11 nom_11 prenom_11
12 nom_12 prenom_12
13 nom_13 prenom_13
14 nom_14 prenom_14
15 nom_15 prenom_0
16 nom_16 prenom_1
17 nom_17 prenom_2
18 nom_18 prenom_3
19 nom_19 prenom_4
20 nom_20 prenom_5
21 nom_21 prenom_6
22 nom_22 prenom_7
23 nom_23 prenom_8
24 nom_24 prenom_9
25 nom_25 prenom_10
26 nom_26 prenom_11
27 nom_27 prenom_12
28 nom_28 prenom_13
29 nom_29 prenom_14
30 nom_30 prenom_0
31 nom_31 prenom_1
32 nom_32 prenom_2
33 nom_33 prenom_3
34 nom_34 prenom_4
35 nom_35 prenom_5
36 nom_36 prenom_6
37 nom_37 prenom_7
38 nom_38 prenom_8
39 nom_39 prenom_9
40 nom_0 prenom_10
41 nom_1 prenom_11
42 nom_2 prenom_12
43 nom_3 prenom_13
44 nom_4 prenom_14
45 nom_5 prenom_0
46 nom_6 prenom_1
47 nom_7 prenom_2
48 nom_8 prenom_3
49 nom_9 prenom_4
50 nom_10 prenom_5
50 rows selected.
SQL> merge into usr
2 using ( with t as (
3 select row_number() over (order by id) as rn_id,
4 id, nom, prenom
5 from usr
6 ),
7 rand_nom as (
8 select row_number() over (order by dbms_random.value) as rn_rand_nom,
9 id, nom, prenom
10 from usr
11 ),
12 rand_prenom as (
13 select row_number() over (order by dbms_random.value) as rn_rand_prenom,
14 id, nom, prenom
15 from usr
16 )
17 select t.id, t1.nom, t2.prenom
18 from t
19 join rand_nom t1 on t1.rn_rand_nom = t.rn_id
20 join rand_prenom t2 on t2.rn_rand_prenom = t.rn_id
21 ) vrand
22 on (usr.id = vrand.id)
23 when matched then update
24 set usr.nom = vrand.nom,
25 usr.prenom = vrand.prenom
26 /
50 rows merged.
SQL> select * from usr
2 /
ID NOM PRENOM
---------- --------------- -----------------------------------------------
1 nom_12 prenom_2
2 nom_36 prenom_11
3 nom_24 prenom_2
4 nom_32 prenom_3
5 nom_4 prenom_5
6 nom_9 prenom_3
7 nom_13 prenom_10
8 nom_25 prenom_11
9 nom_2 prenom_6
10 nom_34 prenom_13
11 nom_5 prenom_1
12 nom_7 prenom_1
13 nom_22 prenom_11
14 nom_29 prenom_9
15 nom_1 prenom_2
16 nom_3 prenom_1
17 nom_30 prenom_12
18 nom_6 prenom_10
19 nom_11 prenom_5
20 nom_8 prenom_8
21 nom_23 prenom_4
22 nom_31 prenom_8
23 nom_10 prenom_3
24 nom_10 prenom_14
25 nom_2 prenom_13
26 nom_7 prenom_6
27 nom_37 prenom_5
28 nom_26 prenom_8
29 nom_20 prenom_7
30 nom_35 prenom_12
31 nom_27 prenom_9
32 nom_17 prenom_7
33 nom_9 prenom_9
34 nom_5 prenom_0
35 nom_33 prenom_10
36 nom_3 prenom_13
37 nom_28 prenom_1
38 nom_19 prenom_5
39 nom_18 prenom_3
40 nom_15 prenom_6
41 nom_38 prenom_4
42 nom_0 prenom_0
43 nom_4 prenom_2
44 nom_16 prenom_14
45 nom_39 prenom_7
46 nom_14 prenom_4
47 nom_1 prenom_0
48 nom_8 prenom_12
49 nom_21 prenom_4
50 nom_6 prenom_14
50 rows selected. |
Partager