Mysql order by funktioniert nicht richtig
Ich bin mit einfachen order by
- Klausel, um Produkte anzeigen, die nach Maßgabe der verfügbaren Menge
Unten ist die Abfrage, die ich benutze:
SELECT * FROM productsinfo ORDER BY quantity desc
Abfrage gibt keine Fehler, aber die Sortierung ist nicht korrekt.Bitte jemand mir sagen, wo ich falsch bin.
BEARBEITEN
Überprüft haben meine quentity clumn ist varchar
geben.Ich bin die Speicherung von Werten in 1,215 10,456
format.
- Können Sie das konkretisieren? Vielleicht einige Beispiel-Tabelle Daten Abfrage und Ausgabe?
- Was ist die Leistung und wie ist deine Tabelle (vor allem
quantity
) definiert? - könnten Sie uns die Daten, die Art der Menge?
- Was bedeutet die definition der Tabelle Aussehen. Führen Sie "SHOW CREATE TABLE productsinfo" so können wir sehen, wie die Spalten definiert sind.
- Abgesehen von der Tatsache, dass Sie schrieb
ROM
stattFROM
Sie sollte mehr Informationen. Fügen Sie die Skripts zur Erstellung der Tabelle, zeigen Sie uns einige Beispiele für date und, natürlich, fügen Sie der Bestellung Sie erwarten zu bekommen. Danke. - Meine quantity-Spalte ist vom Datentyp varchar
- Warum? Ihre Spalten werden entsprechend eingegeben; Menge numerisch ist, und verwenden Sie die entsprechenden numerischen Typ für ihn.
- Beispielcode ist König. Diese Frage könnte mit einer guten Dosis der Tabelle schema und Beispieldaten (in form von SQL-Anweisungen), zusammen mit den gewünschten und den tatsächlichen Ergebnissen. Beachten fast jede Frage erfordert die gleiche: code, was Sie wollen/erwarten, was Sie eigentlich haben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte Ihre Spalte Menge ist
varchar
geben, so ist es nicht Sortieren als zahlen.Überprüfen Sie bitte.Müssen Sie es umwandeln in integer-Typ
Versuchen Sie unter:
ODER Verwenden Sie unten trick.
Ich glaube, Sie bestimmen die Zahl als
VarChar
. Denn wenn es eineNumber
(int, smallint, dezimal,..), wird die Bestellung definitiv richtig.'FB','IN','TW','VM','WP','LD'
als enum, wow dieser Besetzung arbeiten wie Charme, und ich kam zu wissen, mysqlenum
Sortieren von Daten um die Daten, nicht wie der char, also ohne cast wird es zeigen, nur in umgekehrter'LD','WP','VM','TW','IN','FB'
. so nach der Verwendung von cast ich die richtige Reihenfolge'FB', 'IN', 'LD', 'TW', 'VM', 'WP'
Müssen Sie zuerst entfernen Sie die
,
aus dem Wert und schalten Sie das Ergebnis in eine Zahl um. Geben Sie diesem einen Versuch:Die exect Antwort ist:-
für den varchar-Datentyp vergleicht es integert Daten von Links nach rechts, das bedeutet es behandeln 100 weniger die im 11.
So thats, warum beim vergleichen und Sortieren auf varchar-Datentyp für integer-Datentyp ist eine schlechte Wahl.
Konvertieren int Verwendung von cast in einer Abfrage oder ändern Sie Ihre Tabelle.