Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để lấy ID chưa sử dụng đầu tiên trong bảng?

Tôi đã đặt tên bảng của bạn là unused .

SELECT  id
FROM    (
        SELECT  1 AS id
        ) q1
WHERE   NOT EXISTS
        (
        SELECT  1
        FROM    unused
        WHERE   id = 1
        )
UNION ALL
SELECT  *
FROM    (
        SELECT  id + 1
        FROM    unused t
        WHERE   NOT EXISTS
                (
                SELECT  1
                FROM    unused ti
                WHERE   ti.id = t.id + 1
                )
        ORDER BY
                id
        LIMIT 1
        ) q2
ORDER BY
        id
LIMIT 1

Truy vấn này bao gồm hai phần.

Phần đầu tiên:

SELECT  *
FROM    (
        SELECT  1 AS id
        ) q
WHERE   NOT EXISTS
        (
        SELECT  1
        FROM    unused
        WHERE   id = 1
        )

chọn một 1 không có mục nhập nào trong bảng với id này .

Phần thứ hai:

SELECT  *
FROM    (
        SELECT  id + 1
        FROM    unused t
        WHERE   NOT EXISTS
                (
                SELECT  1
                FROM    unused ti
                WHERE   ti.id = t.id + 1
                )
        ORDER BY
                id
        LIMIT 1
        ) q2

chọn một id đầu tiên trong bảng không có id tiếp theo .

Truy vấn kết quả chọn ít giá trị nhất trong hai giá trị này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. LIMIT 1 có được khuyến nghị cho truy vấn trong đó điều kiện WHERE dựa trên PK không?

  2. Làm thế nào để nối hai chuỗi trong truy vấn MySQL UPDATE?

  3. Chỉ xuất các hàng có giá trị null nếu không có cùng một hàng có giá trị khác rỗng

  4. Vòng qua các biến $ _POST

  5. MySQL SELECT LAST_INSERT_ID () cho khóa ghép. Nó có khả thi không?