我试图控制此查询的输出,以返回从较低值到较高值的值。正如你在下面的结果的最后一行所看到的那样,我得到16,15,1作为结果,但我需要得到1,15,16作为结果。
以下是我目前正在使用的脚本。我将不胜感激任何帮助。提前谢谢。
SELECT STUFF ((SELECT ',' + CONVERT(varchar(max), UserId)
FROM MessageRecipients mr2
WHERE mr1.ConversationId = mr2.ConversationId FOR xml path('')), 1, 1,'') AS 'Result'
FROM MessageRecipients mr1
GROUP BY ConversationId
这是我使用当前脚本获得的结果(列名'结果'):
1,19
1,15
16,15,1
答案 0 :(得分:1)
只需将ORDER BY添加到内部SELECT:
SELECT STUFF (
(SELECT ',' + CONVERT(varchar(max), UserId)
FROM MessageRecipients mr2
WHERE mr1.ConversationId = mr2.ConversationId
ORDER BY UserId
FOR xml path(''))
, 1, 1,'') AS 'Result'
FROM MessageRecipients mr1
GROUP BY ConversationId