2016-08-05 7 views
2

Ich habe eine MySql-Tabelle erstellen. Aber ich habe ein Problem, wenn ich Daten in Tabelle einfüge.Mysql Tabelle ID 10 in der zweiten Zeile

Meine Tabellenzeile ist wie folgt aussehen

ID  name 
RS1  a 
RS10  j 
RS2  b 
RS3  c 
RS4  d 
RS5  e 
RS6  f 
RS7  g 
RS8  h 
RS9  i 

Warum ID No.10 auf der zweiten Zeile hinzufügen? Ich benutze MySQL Workbench, um die Tabelle zu erstellen, weiß jemand, wie man es löst?

+0

Wie werden die Daten abgefragt? Denken Sie daran: SQL-Tabellen repräsentieren * ungeordnete * Mengen. Es gibt keine inhärente Ordnung. Jede Bestellung, die Sie benötigen, wird explizit mit 'ORDER BY' bereitgestellt. –

+0

Sind Sie auf Windows? Denken Sie daran, dass es sich nicht um eine Zahl, sondern um eine Zeichenkette handelt, und so sortieren Sie die Spalte. Wie bereits erwähnt, ist die Tabelle nicht inhärent geordnet ... Workbench macht wahrscheinlich diese Sortierung für Sie und verwendet Windows String Sortierung ... – Jarvis

Antwort

1

Ich würde vermuten, dass Sie die Tabelle abfragen wie:

select t.* 
from t 
order by id; 

Diese Aufträge durch die id in alphabetischen Bestellung, nicht numerische Reihenfolge. Weil "1" < "2", "10" vor "2" erscheint.

Hier ist eine einfache Möglichkeit, dies zu beheben:

select t.* 
from t 
order by length(id), id; 

Es gibt andere Möglichkeiten, wie zum Beispiel:

order by substr(id, 3) + 0 

Dieser wandelt alles aus dem dritten Zeichen weiter auf eine Zahl, die mehr ist zum Sortieren geeignet.

+1

Vielen Dank, das ist eine tolle Antwort –

0

Es wird von Workbench als Zeichenfolge sortiert.

Sofern es nicht notwendig ist, die ID mit einem String-Wert voranzutreiben, würde ich empfehlen, ein Autoinkrement-Feld zu verwenden, wenn Sie sich mit der Ansichtsreihenfolge befassen. Wenn es sich um eine Nummer handelt (automatisches Inkrement), wäre das kein Problem.

Wenn Sie eine chronologische Sortierung wünschen, sollten Sie auch ein Feld created oder created_atDateTime verwenden.

Meine Vermutung ist, dass Sie auf einem Windows-Betriebssystem sind, wo ich am häufigsten dieses Problem der String-Sortierung aufgetreten ist von den Erwartungen abweichen.

Verwandte Themen