Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Cari Jurang Pertama dalam Lajur Kaunter Berjalan Menggunakan SQL?

Bagaimanakah Saya Boleh Cari Jurang Pertama dalam Lajur Kaunter Berjalan Menggunakan SQL?

Susan Sarandon
Susan Sarandonasal
2025-01-13 11:22:44767semak imbas

How Can I Find the First Gap in a Running Counter Column Using SQL?

Gunakan SQL untuk mengenal pasti jurang dalam menjalankan kaunter

Mencari jurang dalam lajur run counter ialah tugas biasa dalam analisis data. Dalam SQL, terdapat beberapa cara untuk mencapai ini, menyediakan penyelesaian standard yang serasi dengan pelbagai DBMS.

Cari jurang pertama

Matlamatnya adalah untuk mengenal pasti integer positif terkecil yang hilang daripada lajur pembilang. Sebagai contoh, diberi [1, 2, 4, 5], jurang ialah 3.

MySQL, 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 (paling biasa)

<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>

Fungsi tetingkap gelongsor (jika disokong)

<code class="language-sql">SELECT  -- TOP 1
        -- 解除SQL Server 2012+的以上注释
        previd + 1
FROM    (
        SELECT  id,
                LAG(id) OVER (ORDER BY id) previd
        FROM    mytable
        ) q
WHERE   previd <> id - 1
ORDER BY
        id
-- LIMIT 1
-- 解除PostgreSQL的以上注释</code>

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Jurang Pertama dalam Lajur Kaunter Berjalan Menggunakan SQL?. 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