sql >> データベース >  >> RDS >> Mysql

テーブル内の最初の未使用IDを取得するにはどうすればよいですか?

    テーブルに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
    

    このクエリは2つの部分で構成されています。

    最初の部分:

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

    1を選択します このidを持つテーブルにエントリがありませんか 。

    2番目の部分:

    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
    

    最初のidを選択します 次のidがないテーブル内 。

    結果のクエリは、これら2つの値のうち最小のものを選択します。



    1. SQLの最適化が必要です(おそらくDISTINCT ONが理由ですか?)

    2. MySQLで文字列からスペースを削除する方法

    3. ユーザーが送信したデータベースエントリから新しいWebページを作成するにはどうすればよいですか?

    4. phpエコー他のphpコード