sql server 如何让SQL语句不执行默认排序,而是按照in语句的顺序返回结果

完美-态度 2018-03-05 04:35:10
比如:select * from t_tr_course where id in ('979B5ED7-A76C-4188-A5D6-BC7A580EC7A7','6891E9B2-D352-42B1-8B91-18A5BE287B6A','D2E10A1B-EC36-4EE5-A385-F5AD00EE4E9F','CA4257AA-0643-4DBB-8151-F4E7A6802918')
就像按照in 里面的ID依次排序,而不是系统排序,这个应该怎么解决?
...全文
580 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
完美-态度 2018-03-05
  • 打赏
  • 举报
回复
OK ,解决了。谢谢大神
完美-态度 2018-03-05
  • 打赏
  • 举报
回复
比如这样的:select * from t_tr_course where id in(select top 100 percent em_ShippRecord_GoodID from em_ShippRecord where em_ShippRecord_UserID ='a4d66841-3175-41dc-8665-d8ce6cc6193e' and is_stop = 0 and em_ShippRecord_BYZD1='3' order by em_ShippRecord_StartTime desc)
二月十六 2018-03-05
  • 打赏
  • 举报
回复
动态读表更好了,试试这个
SELECT  t_tr_course.*
FROM    t_tr_course
        JOIN ( SELECT TOP 100 PERCENT
                        em_ShippRecord_GoodID ,
                        em_ShippRecord_StartTime
               FROM     em_ShippRecord
               WHERE    em_ShippRecord_UserID = 'a4d66841-3175-41dc-8665-d8ce6cc6193e'
                        AND is_stop = 0
                        AND em_ShippRecord_BYZD1 = '3'
             ) t ON id = t.em_ShippRecord_GoodID
ORDER BY em_ShippRecord_StartTime DESC
完美-态度 2018-03-05
  • 打赏
  • 举报
回复
@楼上大神,如果In 里面的数据是动态加载出来的了?这样写就太死了。
二月十六 2018-03-05
  • 打赏
  • 举报
回复
;WITH    cte
          AS ( SELECT   '979B5ED7-A76C-4188-A5D6-BC7A580EC7A7' AS col,1 rn
               UNION
               SELECT   '6891E9B2-D352-42B1-8B91-18A5BE287B6A',2
               UNION
               SELECT   'D2E10A1B-EC36-4EE5-A385-F5AD00EE4E9F',3
               UNION
               SELECT   'CA4257AA-0643-4DBB-8151-F4E7A6802918',4
             )
SELECT  t_tr_course.*
FROM    t_tr_course
        JOIN cte ON id = cte.col
ORDER BY cte.rn
完美-态度 2018-03-05
  • 打赏
  • 举报
回复
顶顶顶mark mark

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧