回答編集履歴

5

コード修正

2016/08/04 19:36

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -28,13 +28,11 @@
28
28
 
29
29
  PostgreSQLで以下の感じのクエリを書くと実現出来そうなんですが・・・
30
30
 
31
-
31
+ ** ※クエリが盛大に間違ってたので修正 **
32
-
33
-
34
32
 
35
33
  ```SQL
36
34
 
37
- UPDATE table
35
+ UPDATE table
38
36
 
39
37
  SET
40
38
 
@@ -46,7 +44,9 @@
46
44
 
47
45
  SELECT
48
46
 
49
- T3.*
47
+ T2.*
48
+
49
+ , T3.LETTER
50
50
 
51
51
  FROM
52
52
 
@@ -56,9 +56,9 @@
56
56
 
57
57
  T1.MIN_ID
58
58
 
59
- , T1.UPD_KEY
59
+ , T1.UPD_KEY
60
60
 
61
- , T2.LETTER
61
+ , ROW_NUMBER() OVER (ORDER BY MIN_ID) - 1 AS ROW_NUM
62
62
 
63
63
  FROM
64
64
 
@@ -68,29 +68,23 @@
68
68
 
69
69
  MIN(ID1) AS MIN_ID
70
70
 
71
- , ID2 AS UPD_KEY
71
+ , ID2 AS UPD_KEY
72
-
73
- , ROW_NUMBER() OVER (ORDER BY ID2) - 1 AS ROW_NUM
74
72
 
75
73
  FROM
76
74
 
77
- table
75
+ table
78
76
 
79
77
  GROUP BY
80
78
 
81
79
  ID2
82
80
 
83
- ORDER BY
81
+ ) T1
84
82
 
85
- MIN_ID
83
+ ) T2
86
84
 
87
- ) T1
85
+ INNER JOIN LETTERS T3
88
86
 
89
- INNER JOIN LETTERS T2
90
-
91
- ON MOD(T1.ROW_NUM, 25) = T2.SEQNO
87
+ ON MOD(T2.ROW_NUM, 25) = T3.SEQNO
92
-
93
- ) T3
94
88
 
95
89
  ) T4
96
90
 

4

コード修正

2016/08/04 19:36

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -56,7 +56,7 @@
56
56
 
57
57
  T1.MIN_ID
58
58
 
59
- , T1.ID2 AS UPD_KEY
59
+ , T1.UPD_KEY
60
60
 
61
61
  , T2.LETTER
62
62
 
@@ -66,9 +66,9 @@
66
66
 
67
67
  SELECT
68
68
 
69
- MIN(ID1) MIN_ID
69
+ MIN(ID1) AS MIN_ID
70
70
 
71
- , ID2
71
+ , ID2 AS UPD_KEY
72
72
 
73
73
  , ROW_NUMBER() OVER (ORDER BY ID2) - 1 AS ROW_NUM
74
74
 

3

誤字修正

2016/08/04 19:08

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -114,6 +114,6 @@
114
114
 
115
115
  **・追記**
116
116
 
117
- MOD(MOD(T1.ROW_NUM, 25))と文字列変換テーブルの連番で結合かけてるので、
117
+ MOD(T1.ROW_NUM, 25)と文字列変換テーブルの連番で結合かけてるので、
118
118
 
119
119
  zまで採番が終わるとaから循環し直す仕様にしてます。

2

コード変更

2016/08/04 19:01

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -70,7 +70,7 @@
70
70
 
71
71
  , ID2
72
72
 
73
- , row_number() OVER (ORDER BY ID2) - 1 AS ROW_NUM
73
+ , ROW_NUMBER() OVER (ORDER BY ID2) - 1 AS ROW_NUM
74
74
 
75
75
  FROM
76
76
 

1

追記

2016/08/04 18:52

投稿

Panzer_vor
Panzer_vor

スコア1636

test CHANGED
@@ -88,7 +88,7 @@
88
88
 
89
89
  INNER JOIN LETTERS T2
90
90
 
91
- ON mod(T1.ROW_NUM, 25) = T2.SEQNO
91
+ ON MOD(T1.ROW_NUM, 25) = T2.SEQNO
92
92
 
93
93
  ) T3
94
94
 
@@ -105,3 +105,15 @@
105
105
  これをMySQL風に書き直そうと思いましたが力尽きました・・・
106
106
 
107
107
  (MySQLはROW_NUMBER分析関数はサポートしてないのね・・・orz)
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+ **・追記**
116
+
117
+ MOD(MOD(T1.ROW_NUM, 25))と文字列変換テーブルの連番で結合かけてるので、
118
+
119
+ zまで採番が終わるとaから循環し直す仕様にしてます。