Rumah >pangkalan data >tutorial mysql >Bagaimanakah SQL Boleh Mengenalpasti Nilai Hilang Pertama dalam Lajur Kaunter Berjalan?

Bagaimanakah SQL Boleh Mengenalpasti Nilai Hilang Pertama dalam Lajur Kaunter Berjalan?

Barbara Streisand
Barbara Streisandasal
2025-01-13 11:06:41674semak imbas

How Can SQL Identify the First Missing Value in a Running Counter Column?

Gunakan SQL untuk mencari jurang dalam menjalankan kaunter

SQL menyediakan mekanisme yang berkuasa untuk mencari nilai yang hilang dalam urutan pembilang berjalan dalam jadual.

Untuk menentukan nilai hilang pertama dalam lajur run counter (contohnya, nilai 1, 2, 4, dan 5 ada, tetapi 3 tiada), anda boleh menggunakan teknik SQL berikut:

MySQL dan PostgreSQL:

<code class="language-sql">SELECT id + 1
FROM mytable mo
WHERE NOT EXISTS
(
    SELECT NULL
    FROM mytable mi
    WHERE mi.id = mo.id + 1
)
ORDER BY id
LIMIT 1;</code>

SQL Server:

<code class="language-sql">SELECT TOP 1
id + 1
FROM mytable mo
WHERE NOT EXISTS
(
    SELECT NULL
    FROM mytable mi
    WHERE mi.id = mo.id + 1
)
ORDER BY id;</code>

Oracle:

<code class="language-sql">SELECT *
FROM (
    SELECT id + 1 AS gap
    FROM mytable mo
    WHERE NOT EXISTS
    (
        SELECT NULL
        FROM mytable mi
        WHERE mi.id = mo.id + 1
    )
    ORDER BY id
)
WHERE rownum = 1;</code>

ANSI SQL (paling cekap):

<code class="language-sql">SELECT MIN(id) + 1
FROM mytable mo
WHERE NOT EXISTS
(
    SELECT NULL
    FROM mytable mi
    WHERE mi.id = mo.id + 1
);</code>

Sistem yang menyokong fungsi tetingkap gelongsor:

<code class="language-sql">SELECT previd + 1
FROM (
    SELECT id,
    LAG(id) OVER (ORDER BY id) previd
    FROM mytable
) q
WHERE previd < id
LIMIT 1;</code>

Dengan menggunakan mana-mana teknik SQL ini, anda boleh mengenal pasti jurang yang hilang dengan berkesan dalam menjalankan lajur kaunter dalam jadual SQL, tanpa mengira sistem pangkalan data yang anda gunakan.

Atas ialah kandungan terperinci Bagaimanakah SQL Boleh Mengenalpasti Nilai Hilang Pertama dalam Lajur Kaunter Berjalan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn