回答編集履歴
2
説明補足
answer
CHANGED
|
@@ -37,5 +37,6 @@
|
|
|
37
37
|
ON a.番号 + 1 = b.番号
|
|
38
38
|
WHERE b.番号 IS NULL;
|
|
39
39
|
```
|
|
40
|
+
データ `3,4,6,7,8` の場合でも `1` を返します。
|
|
40
41
|
|
|
41
42
|
SQLServer や Access では、FROM句を省略して書くことで、DUALテーブルと同等のことができるのを利用。
|
1
コード追記
answer
CHANGED
|
@@ -19,4 +19,23 @@
|
|
|
19
19
|
WHERE b.番号 IS NULL;
|
|
20
20
|
```
|
|
21
21
|
|
|
22
|
-
たぶん後者の方が高速
|
|
22
|
+
たぶん後者の方が高速
|
|
23
|
+
|
|
24
|
+
追記
|
|
25
|
+
---
|
|
26
|
+
連番は 1 から始まる前提で、1 がないときは 1 を返してほしい場合は、
|
|
27
|
+
下記のようなSQLでどうかな?
|
|
28
|
+
|
|
29
|
+
```sql
|
|
30
|
+
SELECT
|
|
31
|
+
Min(a.番号) + 1 AS 最小欠番
|
|
32
|
+
FROM
|
|
33
|
+
(SELECT 番号 FROM test_table
|
|
34
|
+
UNION ALL
|
|
35
|
+
SELECT 0 AS 番号) a
|
|
36
|
+
LEFT JOIN test_table b
|
|
37
|
+
ON a.番号 + 1 = b.番号
|
|
38
|
+
WHERE b.番号 IS NULL;
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
SQLServer や Access では、FROM句を省略して書くことで、DUALテーブルと同等のことができるのを利用。
|