Abfrageergebnisse in vordefinierter Reihenfolge zurückgeben
In SQL ist es normalerweise schwierig, Abfrageergebnisse in einer bestimmten Reihenfolge abzurufen, es sei denn, dies wird mithilfe der ORDER angegeben BY-Klausel. In einigen Szenarien ist die ORDER BY-Klausel jedoch möglicherweise nicht anwendbar, beispielsweise wenn versucht wird, Daten in einer vorgegebenen Reihenfolge abzurufen, die ausschließlich auf den Werten eines bestimmten Felds basiert.
Eine kürzliche Diskussion brachte ein Szenario zur Sprache, in dem dies der Fall war Sie möchten die IDs (7, 2, 5, 9 und 8) auswählen und in genau dieser Reihenfolge abrufen, ohne sich auf zusätzliche Kriterien zu verlassen. Die folgenden Abfragen geben beide die Ergebnisse in einer unvorhersehbaren Reihenfolge zurück:
SELECT id FROM table WHERE id in (7,2,5,9,8);
SELECT id FROM table WHERE id in (8,2,5,9,7);
Eine neuartige Lösung wurde durch einen Blogeintrag entdeckt, der dieses Problem elegant angeht:
SELECT id FROM table WHERE id in (7,2,5,9,8) ORDER BY FIND_IN_SET(id,"7,2,5,9,8");
Das FIND_IN_SET Die Funktion wird verwendet, um die Position eines angegebenen Werts innerhalb einer bestimmten Menge zurückzugeben. Beispielsweise hat ID 7 die Position 1, ID 2 die Position 2 und so weiter.
Bei der Anwendung der ORDER BY-Klausel mit FIND_IN_SET versteht die ORDER BY-Anweisung die Positionen und ordnet die Ergebnisse effektiv basierend auf den angegebenen Werten. Diese Lösung nutzt einen internen Mechanismus in MySQL, um die gewünschte vorgegebene Reihenfolge zu erreichen.
Es ist erwähnenswert, dass diese Technik eine wertvolle Alternative sein kann, wenn die ORDER BY-Klausel nicht zur Angabe der gewünschten Reihenfolge verwendet werden kann.
Das obige ist der detaillierte Inhalt vonWie rufe ich SQL-Abfrageergebnisse in einer vordefinierten Reihenfolge ab, ohne ORDER BY zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!