回答編集履歴

2

説明補足

2019/09/05 13:10

投稿

hatena19
hatena19

スコア33790

test CHANGED
@@ -76,6 +76,8 @@
76
76
 
77
77
  ```
78
78
 
79
+ データ `3,4,6,7,8` の場合でも `1` を返します。
80
+
79
81
 
80
82
 
81
83
  SQLServer や Access では、FROM句を省略して書くことで、DUALテーブルと同等のことができるのを利用。

1

コード追記

2019/09/05 13:10

投稿

hatena19
hatena19

スコア33790

test CHANGED
@@ -41,3 +41,41 @@
41
41
 
42
42
 
43
43
  たぶん後者の方が高速
44
+
45
+
46
+
47
+ 追記
48
+
49
+ ---
50
+
51
+ 連番は 1 から始まる前提で、1 がないときは 1 を返してほしい場合は、
52
+
53
+ 下記のようなSQLでどうかな?
54
+
55
+
56
+
57
+ ```sql
58
+
59
+ SELECT
60
+
61
+ Min(a.番号) + 1 AS 最小欠番
62
+
63
+ FROM
64
+
65
+ (SELECT 番号 FROM test_table
66
+
67
+ UNION ALL
68
+
69
+ SELECT 0 AS 番号) a
70
+
71
+ LEFT JOIN test_table b
72
+
73
+ ON a.番号 + 1 = b.番号
74
+
75
+ WHERE b.番号 IS NULL;
76
+
77
+ ```
78
+
79
+
80
+
81
+ SQLServer や Access では、FROM句を省略して書くことで、DUALテーブルと同等のことができるのを利用。