2016-06-10 9 views
0

Ich habe tbl_profilecategory Tabellenstruktur wie folgt aus:Erhalten fehlt id aus der Tabelle

Id  col1 
1  50 
3  30 
4  40 
5  50 
8  80 
9  90 

Jetzt möchte ich die fehlenden IDs aus der Tabelle, so dass das Ergebnis hier sollte wie folgt sein:

Id= 2,6,7 
+0

So id: s sind 1-9? Erstellen Sie einfach eine andere Tabelle mit der ID: s 1-10 und führen Sie eine nicht existierende Abfrage durch. –

+0

@PresidentCamacho ...... mit der Sequenz 1-10 ist keine allgemeine Art ...... es sollte dynamisch sein, wo nein. kann n sein –

+0

Sie wollen das Ergebnis in einem durch Komma getrennten Format? – Arulkumar

Antwort

2

Sie können verwenden

SELECT t1.id - 1 AS missing_id 
 
FROM mytable t1 
 
LEFT JOIN mytable t2 ON t2.id = t1.id - 1 
 
WHERE t2.id IS NULL

+0

Dies liefert das Ergebnis als: '0 2 7' – Arulkumar

+0

Dies ruft nur die letzte ID von jedem Lauf fehlender IDs ab. Deshalb zeigt es nicht "6". – Barmar

+0

ja, gute Antwort, aber ich bekomme IDs nicht vor minimaler ID. bedeutet, wenn Minimum gelöschte ID ist 5, dann bekomme ich nicht 1,2,3,4 –

1

ist here Diese Antwort basiert

SELECT a.id+1 AS start, MIN(b.id) - 1 AS end 
FROM testtable AS a, testtable AS b 
WHERE a.id < b.id 
GROUP BY a.id 
HAVING start < MIN(b.id) 
Verwandte Themen