读取SQL语句按主键顺序排序的问题

fxxyz 2015-07-09 10:11:41
数据库中的主键是ID

比如
1 a
2 a
3 b
4
5
6
8
9
12
15

读取数据假如是:select * from tab where id in (5,8,2,1)

如何显示出来的内容也是按照5,8,2,1的排序方式显示出来呢?
...全文
520 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ajianchina 2015-07-09
  • 打赏
  • 举报
回复
你如果一定要在sql语种这样干,可选择的就是CHARINDEX 或 PATINDEX,前面两个函数都返回指定模式的开始位置,PATINDEX 可使用通配符,而 CHARINDEX 不可以。 如果查询出记录后进行处理,那方法太多了,不说这些。
fxxyz 2015-07-09
  • 打赏
  • 举报
回复
引用 2 楼 Z65443344 的回复:
select * from tab where id in (5,8,2,1) 这问题问的很没道理 5,8,2,1的顺序是哪冒出来的,用户选择先后顺序? 既然SQL语句是你自己拼接的,你完全可以读取出来之后循环一下按你传入的顺序重新排列一下,而不用拼接超复杂的SQL语句
应用的场景是这样的 管理人员需要将产品表里面的产品按指定的顺序读出来 所以他要填写产品的ID列表。。例如:1,2,3,4,5 这样的 哪个产品在前面。它的ID就先写出来。 不知道有没有其他更好的方法?
於黾 2015-07-09
  • 打赏
  • 举报
回复
select * from tab where id in (5,8,2,1) 这问题问的很没道理 5,8,2,1的顺序是哪冒出来的,用户选择先后顺序? 既然SQL语句是你自己拼接的,你完全可以读取出来之后循环一下按你传入的顺序重新排列一下,而不用拼接超复杂的SQL语句
ajianchina 2015-07-09
  • 打赏
  • 举报
回复

select * from tab where Id in (5,8,2,1) order by CHARINDEX('|' + LTRIM(RTRIM(STR(Id))) + '|', '|5|8|2|1|')
  • 打赏
  • 举报
回复
查询出来后再排序,将你的数组(包含index)和查询结果join下
O爱咋咋地O 2015-07-09
  • 打赏
  • 举报
回复
按照主键查询出来再处理

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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