一个存储过程排序的问题!急!100分送上.

Alen_86 2009-03-24 10:09:54
name age state
小明 26 丙
小黄 24 乙
小青 22 甲
小龙 34 乙
小张 26 甲
小玉 35 丙

这个表的样子,我要按最后列 甲,乙,丙 的顺序排列,怎么做比较好,效率比较高!
...全文
134 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hncz_zhoumin 2009-03-24
  • 打赏
  • 举报
回复
学习...
levenzhu 2009-03-24
  • 打赏
  • 举报
回复
学习。。
Alen_86 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zzxap 的回复:]
SQL code

SELECT name, age ,state FROM table order by charindex(','+ltrim(state)+',',',甲,乙,丙,')
[/Quote]
这个倒没用过,不明白,我试试呢.
zzxap 2009-03-24
  • 打赏
  • 举报
回复
[code=SQL]

SELECT name, age ,state FROM table order by charindex(','+ltrim(state)+',',',甲,乙,丙,')

[/CODE]
zzxap 2009-03-24
  • 打赏
  • 举报
回复
[CODE=SQL]
如果是 甲甲甲甲乙乙乙乙丙丙丙丙丙这样排序,就这样
SELECT name, age ,state FROM table where state='甲'
union all
SELECT name, age ,state FROM table where state='乙'
union all
SELECT name, age ,state FROM table where state='丙'

如果是 甲乙丙这样排序,就这样

SELECT name, age ,state FROM table order by charindex(state,'甲乙丙')

[/CODE]
Alen_86 2009-03-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xfreyes 的回复:]
最好再给state 加个字段标识顺序,如stateOrder
[/Quote]

这倒是个不错的主意.好像没更好的办法了.
sjt000 2009-03-24
  • 打赏
  • 举报
回复
数据库是这样了,没办法,
1.如果能修改表结构最好了,别存甲乙丙~这些汉字,存123多好啊。
2.如果不能修改表的话,建议取出数据集然后在代码中处理排序,一般会比数据库中快一点。
Alen_86 2009-03-24
  • 打赏
  • 举报
回复
我也是用的上面的方法,但速度很慢,网站运行的时候会有超时错误,可以数据量比较大,有什么更好的办法解决吗?
sjt000 2009-03-24
  • 打赏
  • 举报
回复

Create table #t(name varchar(10),age int,state varchar(10))
insert #t select '小明',26,'丙' union all
select '小黄',24,'乙' union all
select '小青',22,'甲' union all
select '小龙',34,'乙' union all
select '小张',26,'甲' union all
select '小玉',35,'丙'

select * from #t

select name,age,state,sort=case state when '甲' then 1 when '乙' then 2 when '丙' then 3 else 4 end from #t order by sort asc




drop table #t
xfreyes 2009-03-24
  • 打赏
  • 举报
回复
最好再给state 加个字段标识顺序,如stateOrder
erytbc 2009-03-24
  • 打赏
  • 举报
回复
我不知道。
如果是我我只能

select甲的
union all
select已的
union all
select丙的

呵呵

62,267

社区成员

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

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

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

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