gpt4 book ai didi

SQL:排序依据、子字符串、联合

转载 作者:行者123 更新时间:2023-12-01 16:37:05 27 4
gpt4 key购买 nike

我希望通过“版本”编号的前 8 个字符的子字符串对以下查询的结果进行排序。我理解 SUBSTRING(),所以不要用这个来打扰我。我的问题是尝试实际放置关于 UNION 的 ORDER BY。

更新:我需要按版本顺序返回的数据,但仍然排在具有相同 GUID 的其他行的旁边。

当前查询是这样的,但是版本是随机排列的。

/**** 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')

这就是目前数据返回的方式。

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

最佳答案

您可以包装整个查询,然后使用 ORDER BY 从中SELECT:

SELECT t.[GUID], t.[KEY], t.[VALUE]
FROM
(
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',
'appVer')
UNION ALL
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',
'appVer')
) t
ORDER BY SUBSTRING(t.[VALUE], 1, 8)

注意:我测试了对字符串版本号的排序,数字顺序似乎保持不变。但是,您应该知道,如果您的版本号长度发生变化,这可能是个问题。例如,如果版本可以变成两位数,这将破坏我给出的(以及其他答案给出的)ORDER BY

关于SQL:排序依据、子字符串、联合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36878194/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com