表中記錄查詢排序隨筆(sql server中order by使用方式小總結)

來源:互聯網
上載者:User

相關文章導航
  1. Sql Server2005 Transact-SQL 新兵器學習總結之-總結
  2. Flex,Fms3相關文章索引
  3. 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俱樂部

歡迎您的加入

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.