回答編集履歴

1

typesテーブルのidカラムが連番ではない場合の対応方法を記載

2021/08/18 01:16

投稿

neko_the_shadow
neko_the_shadow

スコア2386

answer CHANGED
@@ -17,4 +17,29 @@
17
17
  SELECT ROW_NUMBER() OVER() AS no, pattern
18
18
  FROM Q
19
19
  WHERE id = (SELECT MAX(id) FROM Q)
20
+ ```
21
+
22
+ ---
23
+
24
+ **2021-08-18 10:11追記**
25
+
26
+ typesテーブルのidカラムが連番ではないのであれば、DENSE_RANKを使って連番を生成するやり方があるかと思います。
27
+
28
+ ```SQL
29
+ WITH RECURSIVE
30
+ P (id, value) AS (
31
+ SELECT DENSE_RANK() OVER(ORDER BY T.id), T.type || ':' || V.value
32
+ FROM types T
33
+ JOIN values V ON T.id = V.type_id
34
+ ),
35
+ Q (id, pattern) AS (
36
+ SELECT id, value FROM P WHERE id = 1
37
+ UNION ALL
38
+ SELECT P.id, pattern || ',' || P.value
39
+ FROM P
40
+ JOIN Q ON P.id = Q.id + 1
41
+ )
42
+ SELECT ROW_NUMBER() OVER() AS no, pattern
43
+ FROM Q
44
+ WHERE id = (SELECT MAX(id) FROM Q)
20
45
  ```