it-swarm.com.de

Wie wähle ich die letzten 10 Zeilen einer SQL-Tabelle ohne ID-Feld aus?

Ich habe eine MySQL-Tabelle mit 25000 Zeilen.

Dies ist eine importierte CSV-Datei. Ich möchte die letzten zehn Zeilen überprüfen, um sicherzustellen, dass alles importiert wird.

Da es jedoch keine ID-Spalte gibt, kann ich nicht sagen:

SELECT * FROM big_table ORDER BY id DESC

Welche SQL-Anweisung würde mir die letzten 10 Zeilen dieser Tabelle anzeigen?

Die Struktur der Tabelle sieht einfach so aus:

columns are: A, B, C, D, ..., AA, AB, AC, ... (like Excel)
all fields are of type TEXT
18
Edward Tanguay

SQL-Tabellen haben keine implizite Reihenfolge, die Reihenfolge muss aus den Daten stammen. Vielleicht sollten Sie Ihrer Tabelle ein Feld hinzufügen (z. B. einen int-Zähler) und die Daten erneut importieren.

Dies gibt jedoch nur die Reihenfolge des Imports und nicht die Daten an. Wenn Ihre Daten keine Bestellung haben, müssen Sie herausfinden, wie sie hinzugefügt werden.

EDIT: Sie sagen

... um sicherzustellen, dass alles importiert wurde.

Was ist los mit der Zeilenanzahl?

13
Tony

Alle Antworten hier sind besser, aber nur für den Fall ... Es gibt eine Möglichkeit, 10 zuletzt hinzugefügte Datensätze zu erhalten. (Du bist das ziemlich unzuverlässig :)) noch kannst du sowas machen

SELECT * FROM table LIMIT 10 OFFSET N-10

N - sollte die Gesamtzahl der Zeilen in der Tabelle sein (SELECT Anzahl (*) FROM-Tabelle). Sie können es mit vorbereiteten Abfragen in eine einzelne Abfrage einfügen, aber ich werde darauf nicht eingehen.

21
Ivan

Wählen Sie aus der Tabelle aus, sortieren Sie in umgekehrter Reihenfolge mit ORDER BYDESC und begrenzen Sie Ihre Ergebnisse auf 10.

SELECT * FROM big_table ORDER BY A DESC LIMIT 10
15
Steven Scott

Sie können die Option "ORDER BY DESC" verwenden und dann in die ursprüngliche Reihenfolge zurücksetzen:

(SELECT * FROM Tabellenname ORDER BY ID DESC LIMIT 10) ORDER BY ID;

10
Dustin Soodak
SELECT * FROM big_table ORDER BY A DESC LIMIT 10
5
user3305213

Wenn Sie eine LOAD DATA INFILE 'myfile.csv'-Operation ausführen, können Sie am besten überprüfen, ob alle Zeilen eingegangen sind, indem Sie show warnings(); überprüfen. Wenn Sie die Daten in eine leere oder temporäre Tabelle laden, können Sie auch die Anzahl der Zeilen überprüfen, die nach dem Einfügen vorhanden sind .

4
dnagirl

das Ausführen einer count (*) - Abfrage für große Daten ist teuer. Ich denke, mit "SELECT * FROM Tabelle ORDER BY ID DESC LIMIT n", wobei n die Anzahl der Zeilen pro Seite ist, besser und leichter

2
Sameeh Harfoush

Ein Low-Tech-Ansatz: Dies mit SQL zu tun, kann übertrieben sein. Entsprechend Ihrer Frage müssen Sie nur einmal den Import überprüfen.

Warum nicht einfach: SELECT * FROM ImportTable

und scrollen Sie dann zum Ende des Ergebnisrasters und überprüfen Sie die "letzten" Zeilen.

1
Paul Sasik

Wenn Sie wissen, wie viele Zeilen zu erwarten sind, würde ich in Ihrer Datenbank eine separate temporäre Tabelle mit der erwarteten Struktur erstellen, diese anhängen und dann die Zählung überprüfen ... Wenn Sie damit zufrieden sind, können Sie diese Daten vor dem Anhängen massieren es in Ihren endgültigen Produktionstisch.

0
DRapp

sie können mit dem Code 10 Zeilen vom Ende der Tabelle auswählen. *. * Wählen Sie aus (SELECT * FROM Tabelle1 Reihenfolge nach ID ab LIMIT 10) als Tabelle2 Reihenfolge nach ID "

0
mahdiaction