sqlserver排序列,sqlserver 排序

sql怎么对列重新排序

给你举个例子:

在宁陵等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、成都网站设计 网站设计制作按需定制网站,公司网站建设,企业网站建设,成都品牌网站建设,网络营销推广,外贸网站制作,宁陵网站建设费用合理。

a,b两个字段:

1,3

4,3

1,4

2,6

对它们排序:

order

by

a,b

结果:

1,3

1,4

2,6

4,3

解释:

先按a

字段排序,得1,1,2,4

如果出现a字段相同的情形,按b字段排序得到:1,3;1,4;

b字段只是在当a字段相同的时候才用到。

同理group

by中也是这个逻辑。

这个逻辑所有数据库中通用。

如何用sqlserver 改变一个列按一定的顺序排列,

试试这个,能解决你的问题:

假设表名为tablename

--加自增列tempCol ,101为起始值,1为自增值,更新之后删掉这列

alter table tablename add tempCol int identity(101,1)。

sqlserver排序问题

1、查询SQL中的所有表: Select TABLE_NAME FROM 数据库名称.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE' 执行之后,就可以看到数据库中所有属于自己建的表的名称 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 '?'" 执行完之后,就可以看到数据库中所有用户表的信息 4、查询总存储过程数:select count(*) 总存储过程数 from sysobjects where xtype='p' 附:xtype类型D = 默认值或 DEFAULT 约束

F = FOREIGN KEY 约束L = 日志FN = 标量函数

IF = 内嵌表函数

P = 存储过程

PK = PRIMARY KEY 约束(类型是 K)

RF = 复制筛选存储过程S = 系统表TF = 表函数

TR = 触发器U = 用户表UQ = UNIQUE 约束(类型是 K)V = 视图X = 扩展存储过程 另:在sqlserver中取得某个数据库中所有表名的sql语句 select sysobjects.name from sysobjects.xtype ='U';SELECT name

WHERE (xtype = 'U') 在数据库的sysobjects表里有这个数据库全部表的信息, xtype值为'U'的就是表名 注意:一般通过上述方法获得全部用户表示都会有一个dtproperties表,SQLSERVER 默认它也是用户表,想要从用户表中排出,需要加上限定条件 status0,即:select * from sysobjects where xtype='U' and status0

sqlserver排序

排序可以是升序的

(ASC),也可以是降序的

(DESC)。如果未指定是升序还是降序,就假定为

ASC。

下面的查询返回按

ProductID

升序排序的结果:

代码如下

复制代码

USE

AdventureWorks2008R2;

GO

SELECT

ProductID,

ProductLine,

ProductModelID

FROM

Production.Product

ORDER

BY

ProductID;

如果

ORDER

BY

子句中指定了多个列,则排序是嵌套的。下面的语句先按产品子类别降序排序

Production.Product

表中的行,然后在每个产品子类别中按

ListPrice

升序排序这些行。

代码如下

复制代码

USE

AdventureWorks2008R2;

GO

SELECT

ProductID,

ProductSubcategoryID,

ListPrice

FROM

Production.Product

ORDER

BY

ProductSubcategoryID

DESC,

ListPrice;

问题

同一...排序可以是升序的

(ASC),也可以是降序的

(DESC)。如果未指定是升序还是降序,就假定为

ASC。

下面的查询返回按

ProductID

升序排序的结果:

代码如下

复制代码

USE

AdventureWorks2008R2;

GO

SELECT

ProductID,

ProductLine,

ProductModelID

FROM

Production.Product

ORDER

BY

ProductID;

如果

ORDER

BY

子句中指定了多个列,则排序是嵌套的。下面的语句先按产品子类别降序排序

Production.Product

表中的行,然后在每个产品子类别中按

ListPrice

升序排序这些行。

代码如下

复制代码

USE

AdventureWorks2008R2;

GO

SELECT

ProductID,

ProductSubcategoryID,

ListPrice

FROM

Production.Product

ORDER

BY

ProductSubcategoryID

DESC,

ListPrice;

问题

同一个查询的结果集为什麽有时候是按他想要的顺序排列,有时候又不是,或者是在SQL2000里是这个顺序,到了SQL2005/2008又是那个顺序?

其实,只要语句里没有指定“order

by”,SQLSERVER并不会按照顺序返回的。有可能你的表里有一个字段已经建立了索引

你想结果集按照那个建立了索引的字段排序,那么你不指定“order

by”是没有问题的,因为表的存储顺序就是按照那个字段

的顺序排好序了,所以可以不指定“order

by”,但是如果你没有在想排序的那个字段建立索引,或者在SQL2000里建立了

索引,而在SQL2005/2008里没有建立索引,那么就要明确地用“order

by”指定。如果你没有指定,哪怕一模一样的查询,

结果集顺序这一次和上一次不一样是很正常的。

sqlserver怎样让一列数据根据中文、英文、数字的顺序进行排序

select * from table order by column asc 按顺序排列

select * from table order by column desc 按倒序排列

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的排名(循环)

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排序列,sqlserver 排序
网站地址:http://scjbc.cn/article/dsdggij.html

其他资讯