Ich möchte die Ergebnisse der folgenden Abfrage durch eine Teilzeichenfolge der ersten 8 Zeichen der 'Versionsnummer' bestellen. Ich verstehe SUBSTRING(), also belästige mich nicht damit. Mein Problem ist es, ORDER BY in Bezug auf die UNION zu platzieren.SQL: Order By, Teilstring, Union
UPDATE: Ich brauche die Daten in der Reihenfolge der Version zurückgegeben, aber immer noch neben anderen Zeilen mit der gleichen GUID bestellt.
Die aktuelle Abfrage ist wie folgt, aber Versionen kommen in zufälliger Reihenfolge.
/**** PLAYER MATCHUPS TWO ***/
SELECT e.[GUID], e.[KEY], e.[VALUE]
FROM db e INNER JOIN
(SELECT[GUID] FROM db
WHERE[Key] = 'Session.Type' and[Value] = 'EndMatchTypA') g
ON e.[GUID] = g.[GUID]
WHERE [KEY] IN('CharacterID',
'OpponentID',
'Version')
UNION ALL
/**** PLAYER MATCHUPS ONE ***/
SELECT e.[GUID], e.[KEY], e.[VALUE]
FROM db e INNER JOIN
(SELECT[GUID] FROM db
WHERE[Key] = 'Session.Type' and [Value] = 'EndMatchTypeB') g
ON e.[GUID] = g.[GUID]
WHERE[KEY] IN('CharacterID',
'OpponentID',
'Version')
So kehren die Daten im Moment zurück.
GUID Key Value
-------------------------------------------
1313-2212 Version 3.0.4.0_x64_!#
1313-2212 CharacterID 3
1313-2212 OpponentID 5
4321-1567 Version 1.0.0.0_x64_!#
4321-1567 CharacterID 11
4321-1567 OpponentID 2
Welche Spalte möchten Sie 'ORDER BY'? –
Alle Schlüssel müssen nach dem "Wert" des Versionsschlüssels geordnet sein (z. B. 1.0.0.0> 1.2.0.0> 2.0.0.0> 3.0.0.0), aber dennoch von der GUID gebündelt werden. –
IIRC Sie sollten OK sein, um das 'ORDER BY' * nach * dem letzten' WHERE' zu setzen; Er wird die beiden Anfragen der UNION anordnen. Alternativ können Sie die gesamte Abfrage in eine Unterabfrage umwandeln oder ein CTE verwenden, um dies deutlicher zu machen. Es kann jedoch schwierig für Sie sein, die gewünschte Reihenfolge basierend auf den Zeichenfolgenwerten in Ihren Daten zu erhalten. Ich tendiere dazu, dies in meinem Klienten oder in der mittleren Schicht zu tun. Die SQL-Zeichenfolgenmanipulation ist begrenzt; Sie negieren auch den Vorteil eines Index für die Versionswerte, indem Sie nach einer Funktion sortieren. – Olly