真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

sqlserver降排序,sql server按降序排列

sqlserver 多個條件排序問題?

看你狀態(tài)用的什么數(shù)據(jù)類型了。要是用的字符型,那升序降序都是按照字母序。升序就asc降序就desc

創(chuàng)新互聯(lián)是工信部頒發(fā)資質(zhì)IDC服務器商,為用戶提供優(yōu)質(zhì)的雅安機房托管服務

order by 狀態(tài) desc 截止時間 asc

sqlserver排序

排序可以是升序的 (ASC),也可以是降序的 (DESC)。如果未指定是升序還是降序,就假定為 ASC。

下面的查詢返回按 ProductID 升序排序的結(jié)果:

代碼如下 復制代碼

USE AdventureWorks2008R2;

GO

SELECT ProductID, ProductLine, ProductModelID

FROM Production.Product

ORDER BY ProductID;

如果 ORDER BY 子句中指定了多個列,則排序是嵌套的。下面的語句先按產(chǎn)品子類別降序排序 Production.Product 表中的行,然后在每個產(chǎn)品子類別中按 ListPrice 升序排序這些行。

代碼如下 復制代碼

USE AdventureWorks2008R2;

GO

SELECT ProductID, ProductSubcategoryID, ListPrice

FROM Production.Product

ORDER BY ProductSubcategoryID DESC, ListPrice;

問題

同一個查詢的結(jié)果集為什麼有時候是按他想要的順序排列,有時候又不是,或者是在SQL2000里是這個順序,到了SQL2005/2008又是那個順序?

其實,只要語句里沒有指定“order by”,SQLSERVER并不會按照順序返回的。有可能你的表里有一個字段已經(jīng)建立了索引

你想結(jié)果集按照那個建立了索引的字段排序,那么你不指定“order by”是沒有問題的,因為表的存儲順序就是按照那個字段

的順序排好序了,所以可以不指定“order by”,但是如果你沒有在想排序的那個字段建立索引,或者在SQL2000里建立了

索引,而在SQL2005/2008里沒有建立索引,那么就要明確地用“order by”指定。如果你沒有指定,哪怕一模一樣的查詢,

結(jié)果集順序這一次和上一次不一樣是很正常的。

SQLSERVER排序問題,求大蝦指教

-- 排序查詢

select a.badge,a.[name],a.department,a.job,isnull(b.course,'曠考') course,isnull(b.grade,0) grade,b.[order]

from employee a left join training b on a.badge=b.badge

order by b.course,b.grade desc

-- 更新表2的排名(循環(huán))

declare @tid int,@order int,@ctid int,@corder int,@sql varchar(8000)

set @tid = 1

set @order = 1

select top 1 @ctid=tid from training order by tid desc

while (@tid=@ctid)

begin

set @order=1

select @corder=count(*) from training where tid=@tid

while (@order=@corder)

begin

set @sql = 'update training set [order]='+convert(varchar(50),@order)+'

where badge not in (select top '+convert(varchar(50),@order-1)+' badge from training where tid='+convert(varchar(50),@tid)+' order by grade desc)

and tid='+convert(varchar(50),@tid)

exec (@sql)

set @order=@order+1

end

set @tid=@tid+1

end

-- 更新表2的排名(游標)

if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#t') and type='U')

drop table #t

create table #t

(

ftid int,

fbadge int,

[order] int identity(1,1)

)

declare @tid int

declare c1 cursor for select distinct tid from training

open c1

fetch next from c1 into @tid

while @@fetch_status=0

begin

insert into #t(ftid,fbadge)

select a.tid,a.badge from training a where a.tid=@tid order by a.grade desc

update a set a.[order] = b.[order] from training a join #t b on a.tid=b.ftid and a.badge=b.fbadge

truncate table #t

fetch next from c1 into @tid

end

close c1

deallocate c1

drop table #t

寫的不好,如果有更好的方法希望貼出來一起學習下。

sqlserver排序問題

1、查詢SQL中的所有表: Select TABLE_NAME FROM 數(shù)據(jù)庫名稱.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE' 執(zhí)行之后,就可以看到數(shù)據(jù)庫中所有屬于自己建的表的名稱 2、查詢SQL中所有表及列: Select dbo.sysobjects.name as Table_name, dbo.syscolumns.name AS Column_name FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id Where (dbo.sysobjects.xtype = 'u') AND (NOT (dbo.sysobjects.name LIKE 'dtproperties')) 3、在Sql查詢分析器,還有一個簡單的查詢方法: EXEC sp_MSforeachtable @command1="sp_spaceused '?'" 執(zhí)行完之后,就可以看到數(shù)據(jù)庫中所有用戶表的信息 4、查詢總存儲過程數(shù):select count(*) 總存儲過程數(shù) from sysobjects where xtype='p' 附:xtype類型D = 默認值或 DEFAULT 約束

F = FOREIGN KEY 約束L = 日志FN = 標量函數(shù)

IF = 內(nèi)嵌表函數(shù)

P = 存儲過程

PK = PRIMARY KEY 約束(類型是 K)

RF = 復制篩選存儲過程S = 系統(tǒng)表TF = 表函數(shù)

TR = 觸發(fā)器U = 用戶表UQ = UNIQUE 約束(類型是 K)V = 視圖X = 擴展存儲過程 另:在sqlserver中取得某個數(shù)據(jù)庫中所有表名的sql語句 select sysobjects.name from sysobjects.xtype ='U';SELECT name

WHERE (xtype = 'U') 在數(shù)據(jù)庫的sysobjects表里有這個數(shù)據(jù)庫全部表的信息, xtype值為'U'的就是表名 注意:一般通過上述方法獲得全部用戶表示都會有一個dtproperties表,SQLSERVER 默認它也是用戶表,想要從用戶表中排出,需要加上限定條件 status0,即:select * from sysobjects where xtype='U' and status0


當前名稱:sqlserver降排序,sql server按降序排列
文章鏈接:http://weahome.cn/article/dssieho.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部