相關文章導航
- Sql Server2005 Transact-SQL 新兵器學習總結之-總結
- Flex,Fms3相關文章索引
- FlexAir開源版-全球免費群組視訊聊天室,免費網路遠程群組視訊會議系統((Flex,Fms3聯合開發))<視訊交談,會議開發執行個體8>
跟DB打交道,用得最多的是查詢,既然查詢就會有查詢記錄排序問題,我一直通過order by來解決,order by常用的使用方式我就不提了
項目的需求千變萬化,讓我們看看下面幾個怪排序需求
--先建立一個表
create table ai(
id int not null,
no varchar(10) not null
)
go
--往表中插入資料
insert into ai
select 105,'2'
union all
select 105,'1'
union all
select 103,'1'
union all
select 105,'4'
go
--查詢效果如下:
select * from ai
go
id no
----------- ----------
105 2
105 1
103 1
105 4
i.
--要求的查詢結果如下
--即要求no列的資料按'4','1','2'排列
id no
----------- ----------
105 4
105 1
103 1
105 2
--解決方案1
--利用函數CHARINDEX
select * from ai
order by charindex(no,'4,1,2')
--解決方案2
--利用函數case
select * from ai
order by case when no='4' then 1
when no='1' then 2
when no='2' then 3
end
--解決方案3
--利用UNION 運算子
select * from ai
where no='4'
union all
select * from ai
where no='1'
union all
select * from ai
where no='2'
ii.
--查詢要求指定no='4'排第一行,其他的行隨機排序
id no
----------- ----------
105 4
105 2
105 1
103 1
--解決方案
select * from ai
order by case when no='4' then 1
else 1+rand()
end
iii.
--查詢要求所有行隨機排序
--解決方案
select * from ai
order by newid()
iiii
--有一表ab有列i,其中資料如下:
i varchar(10)
a1
a10
a101
a5
p4
p41
p5
--現在要求列i中資料先按字母排序,再按數字排序
--效果如下:
a1
a5
a10
a101
p4
p5
p41
--解決方案
select * from ab
order by left(i,1),convert(int,substring(i,2,8000))
希望上面提到的知識對你有所提示
當然歡迎交流和指正
收藏與分享
收藏到QQ書籤 添加到百度搜藏 {
function onclick()
{
window.open('http://myweb.cn.yahoo.com/popadd.html?url='+encodeURIComponent(document.location.href)+'&title='+encodeURIComponent(document.title), 'Yahoo','scrollbars=yes,width=440,height=440,left=80,top=80,status=yes,resizable=yes');
}
}">添加到雅虎收藏
RSS訂閱我 什麼是RSS?
東莞.net俱樂部
歡迎您的加入