sql >> Database >  >> RDS >> Mysql

Hoe hiaten in de sequentiële nummering in mysql te vinden?

Bijwerken

ConfexianMJS leverde veel beter antwoord in termen van prestaties.

Het (niet zo snel mogelijke) antwoord

Hier is een versie die werkt op tafels van elke grootte (niet alleen op 100 rijen):

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 - eerste id in huidige opening
  • gap_ends_at - laatste id in huidige opening


  1. Hoe gebruik je de WITH-clausule in MySQL?

  2. Wat is dit JavaScript nodig?

  3. Hoe u onbedoelde gegevensverwijdering in MySQL en MariaDB kunt voorkomen

  4. Hoe ELKE / SOMMIGE logische operator in SQL Server te gebruiken - SQL Server / TSQL-zelfstudie, deel 127