首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

查询语句

2012-01-19 
求一个查询语句现在有一个表IDDESC1EST2MS3CS45TM6CM要求按照DESC排续,小到大的话就放在最后面SELECT*

求一个查询语句
现在有一个表

ID             DESC          
1                 EST        
2                   MS
3                 CS
4                 "   "
5                   TM
6                 CM
要求按照DESC排续,小到大       "   "的话就放在最后面
SELECT   *   FORM   TABLE1   ORDER   BY   DESC
结果
  4         "   "
1         EST
6         CM
3       CS
.....
空DESC跑最上面去了

结果应该是
6     CM
3     CS
.....
5     TM
4     "   "
谢谢啦

[解决办法]
Create table TABLE1
(
a int,
b char(4)
)
insert into TABLE1 (a,b)
Select 1, 'EST '
Union All
Select 2, 'MS '
Union All
Select 3, 'CS '
Union All
Select 4, ' '
Union All
Select 5, 'TM '
Union All
Select 6, 'CM '
GO
Select * From TABLE1 Order By Case IsNull(b, ' ') When ' ' Then 1 Else 0 End, b
GO
Drop Table TABLE1
--Result
/*
6CM
3CS
1EST
2MS
5TM
4
*/
[解决办法]
用你提供的数据,在SQL数据库上试过鱼的写法完全正确
我的那个改一下也可以
select a,b
from tb
order by case b when ' " " ' then '1 '+b else '0 '+b end

鱼的排序道理就是先按b字段的值决定一个1或0的数字排序,再按b字段排序
我的这个也是一样的道理,如果b是 " ",则在原字段前加1,否则加0,这样排序1自然都会在0之后。

因为你实际情况比较复杂,所以你可以从代码里先debug.print你的SQL语句,看看有没有什么错误,然后放入查询分析器中去调试

热点排行