Obwohl es nicht oft verwendet wird, gibt es Situationen, in denen es notwendig ist, Anweisungen in MySQL zu schreiben, um Funktionen zu entwickeln. In SQL Server bin ich es gewohnt, die Funktion row_number() zum Sortieren zu verwenden, aber MySQL verfügt nicht über eine solche Funktion. Dann fand ich einen Artikel des Po-Besitzers. Abfrage durch Variablenzuweisung. (PS: Die von mir getestete Version ist MySQL 5.6)
Erstellen Sie zuerst die Tabelle
CREATE TABLE `test` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `Col1` varchar(50) DEFAULT NULL, `Col2` varchar(50) DEFAULT NULL, `Col3` int(11) DEFAULT NULL, `Col4` float DEFAULT NULL, PRIMARY KEY (`ID`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
Fügen Sie dann die Testdaten ein und verwenden Sie zum Testen die vom Po-Master eingeführte Methode
insert into test(Col1,Col2,Col3,Col4) values (1,2,3,4),(1,2,6,5),(1,2,7,8),(1,"激发",5,7); delimiter // select @row:=case when @row is null then 1 else @row+1 end as RNr, ID,Col1,Col2,Col3,Col4 from test ; // delimiter ;
Das Ergebnis der Abfrage ist
Warum ist Rnr bei der Überprüfung der Fehler immer 1? Denn für diese Abfrage war der Wert der @row-Variablen immer null, sodass er basierend auf der Diskriminante des Falles nur 1 sein kann. verursachte dieses Phänomen. Wenn Sie es jedoch erneut ausführen, ist es normal. Wir verwenden dasselbe Skript
Führen Sie es erneut aus und es sollte 2345 sein
Der Test hat bestätigt, dass dies tatsächlich der Fall ist, es kann also gesehen werden. Die Variable ist in dieser Sitzung immer vorhanden und wird jedes Mal verwendet, sodass die vorherige Situation auftritt.
Tatsächlich ist die entsprechende Lösung auch sehr einfach. Da in jeder Sitzung derselbe Wert verwendet wird, müssen Sie zu Beginn nur einen Anfangswert zuweisen, um das Problem zu lösen begining row = 0; Fügen Sie diesen Satz hinzu, dann wird bei jeder Ausführung zuerst ein Anfangswert zugewiesen, und Sie können natürlich konsistente Ausführungsergebnisse erhalten.
Dieser Test zeigt mir, dass in dieser Datenbank der Anfangswert der Kontrollvariablen hin wichtig ist.
Das Obige ist die Verwendung und Aufmerksamkeit der vom Herausgeber eingeführten MySQL-Sortierfunktion row_number(). Ich hoffe, sie wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Herausgeber wird Ihnen antworten rechtzeitig. Vielen Dank für Ihre Unterstützung der Website!