回答編集履歴
5
コード修正
answer
CHANGED
@@ -13,38 +13,35 @@
|
|
13
13
|
25 z
|
14
14
|
|
15
15
|
PostgreSQLで以下の感じのクエリを書くと実現出来そうなんですが・・・
|
16
|
-
|
16
|
+
** ※クエリが盛大に間違ってたので修正 **
|
17
|
-
|
18
17
|
```SQL
|
19
|
-
UPDATE table
|
18
|
+
UPDATE table
|
20
19
|
SET
|
21
20
|
ID1 = CONCAT(SUBSTR(ID1, 1, 1), T4.LETTER, SUBSTR(ID1, 3))
|
22
21
|
FROM
|
23
22
|
(
|
24
23
|
SELECT
|
25
|
-
|
24
|
+
T2.*
|
25
|
+
, T3.LETTER
|
26
26
|
FROM
|
27
27
|
(
|
28
28
|
SELECT
|
29
29
|
T1.MIN_ID
|
30
|
-
, T1.UPD_KEY
|
30
|
+
, T1.UPD_KEY
|
31
|
-
,
|
31
|
+
, ROW_NUMBER() OVER (ORDER BY MIN_ID) - 1 AS ROW_NUM
|
32
32
|
FROM
|
33
33
|
(
|
34
34
|
SELECT
|
35
35
|
MIN(ID1) AS MIN_ID
|
36
|
-
, ID2 AS UPD_KEY
|
36
|
+
, ID2 AS UPD_KEY
|
37
|
-
, ROW_NUMBER() OVER (ORDER BY ID2) - 1 AS ROW_NUM
|
38
37
|
FROM
|
39
|
-
table
|
38
|
+
table
|
40
39
|
GROUP BY
|
41
40
|
ID2
|
42
|
-
ORDER BY
|
43
|
-
MIN_ID
|
44
|
-
) T1
|
41
|
+
) T1
|
42
|
+
) T2
|
45
|
-
|
43
|
+
INNER JOIN LETTERS T3
|
46
|
-
|
44
|
+
ON MOD(T2.ROW_NUM, 25) = T3.SEQNO
|
47
|
-
) T3
|
48
45
|
) T4
|
49
46
|
WHERE
|
50
47
|
ID2 = T4.UPD_KEY
|
4
コード修正
answer
CHANGED
@@ -27,13 +27,13 @@
|
|
27
27
|
(
|
28
28
|
SELECT
|
29
29
|
T1.MIN_ID
|
30
|
-
, T1.
|
30
|
+
, T1.UPD_KEY
|
31
31
|
, T2.LETTER
|
32
32
|
FROM
|
33
33
|
(
|
34
34
|
SELECT
|
35
|
-
MIN(ID1) MIN_ID
|
35
|
+
MIN(ID1) AS MIN_ID
|
36
|
-
, ID2
|
36
|
+
, ID2 AS UPD_KEY
|
37
37
|
, ROW_NUMBER() OVER (ORDER BY ID2) - 1 AS ROW_NUM
|
38
38
|
FROM
|
39
39
|
table
|
3
誤字修正
answer
CHANGED
@@ -56,5 +56,5 @@
|
|
56
56
|
|
57
57
|
|
58
58
|
**・追記**
|
59
|
-
MOD(
|
59
|
+
MOD(T1.ROW_NUM, 25)と文字列変換テーブルの連番で結合かけてるので、
|
60
60
|
zまで採番が終わるとaから循環し直す仕様にしてます。
|
2
コード変更
answer
CHANGED
@@ -34,7 +34,7 @@
|
|
34
34
|
SELECT
|
35
35
|
MIN(ID1) MIN_ID
|
36
36
|
, ID2
|
37
|
-
,
|
37
|
+
, ROW_NUMBER() OVER (ORDER BY ID2) - 1 AS ROW_NUM
|
38
38
|
FROM
|
39
39
|
table
|
40
40
|
GROUP BY
|
1
追記
answer
CHANGED
@@ -43,7 +43,7 @@
|
|
43
43
|
MIN_ID
|
44
44
|
) T1
|
45
45
|
INNER JOIN LETTERS T2
|
46
|
-
ON
|
46
|
+
ON MOD(T1.ROW_NUM, 25) = T2.SEQNO
|
47
47
|
) T3
|
48
48
|
) T4
|
49
49
|
WHERE
|
@@ -51,4 +51,10 @@
|
|
51
51
|
```
|
52
52
|
|
53
53
|
これをMySQL風に書き直そうと思いましたが力尽きました・・・
|
54
|
-
(MySQLはROW_NUMBER分析関数はサポートしてないのね・・・orz)
|
54
|
+
(MySQLはROW_NUMBER分析関数はサポートしてないのね・・・orz)
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
**・追記**
|
59
|
+
MOD(MOD(T1.ROW_NUM, 25))と文字列変換テーブルの連番で結合かけてるので、
|
60
|
+
zまで採番が終わるとaから循環し直す仕様にしてます。
|