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

mysqlで連番のギャップを見つける方法は?

    更新

    ConfexianMJSははるかに優れたを提供しました 回答 パフォーマンスの観点から。

    (できるだけ速くはない)答え

    これは、(100行だけでなく)任意のサイズのテーブルで機能するバージョンです:

    SELECT (t1.id + 1) as gap_starts_at, 
           (SELECT MIN(t3.id) -1 FROM arrc_vouchers t3 WHERE t3.id > t1.id) as gap_ends_at
    FROM arrc_vouchers t1
    WHERE NOT EXISTS (SELECT t2.id FROM arrc_vouchers t2 WHERE t2.id = t1.id + 1)
    HAVING gap_ends_at IS NOT NULL
    
    • gap_starts_at -現在のギャップの最初のID
    • gap_ends_at -現在のギャップの最後のID


    1. OracleをAmazonAuroraに接続する

    2. INステートメントを使用したOracleパラメータ?

    3. MariaDBでのGET_FORMAT()のしくみ

    4. NextFormマルチテーブルウィザードを使用したDB移行