======[SQL] First not used Id====== Erste freie ID einer Tabelle ermitteln ACHTUNG! Eignet sich nicht um in einer Multiuser-Umgebung die IDs zu vergeben, da zwischen ID auslesen und neuen Beitrag posten jemand anderes die ID besetzen kann. ===== Ausgangslage ===== zB. Wenn wir eine ID-Reihe haben 1,2,3,4,5,7,8,15 dann ist die erste ungenutzte id die 6. ===== Code ===== SELECT MIN(newIds.newId) AS firstNotUsedId FROM -- jeweils die nächst höhere ID ermitteln (SELECT id + 1 AS newId FROM test) AS newIds -- und mit der Tabelle zurückverknüpfen LEFT JOIN (SELECT id FROM test ) AS ids ON newIds.newId = ids.id WHERE ids.id IS NULL; Zur Erklärung: Ich ermittle auf jeden Datenstz die Nächst höhere ID SELECT id + 1 AS newId FROM test An diese hänge ich die Tabelle mittels eines LEFT JOIN Daraus nehme ich alle newId die in der Tabelle nicht als ID bestehen. Zuguter letzt lese ich mit min() die kleinste daraus aus. {{tag>MySQL}} ===== Spielwiese ===== [[http://sqlfiddle.com/#!2/68751c/1|Beispiel bei sqlfiddle.com]]