sqlserver表排序,sqlserver查询排序

sqlserver数据表排序问题

你这个问题,本人以前就遇到过,目前按照时间排序(order by 时间)输出是最好的办法。库里有多乱你也不用看啊!

创新互联公司主营雄县网站建设的网络公司,主营网站建设方案,App定制开发,雄县h5微信平台小程序开发搭建,雄县网站营销推广欢迎雄县等地区企业咨询

----

第二种办法:根据了一位数据库大师的推导方式,A -R,那么(A,B)-R

,所以建立复合聚集主键就可以了。

如果非要创建单列主键,那么ID 最好不要创建 唯一约束,或是单列主键。如果不信你自己多试试。

如下有代码 你可以试试:

----------

USE [LEdwin]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

DROP TABLE [dbo].[A]

GO

CREATE TABLE [dbo].[A](

[ID] [uniqueidentifier] NOT NULL,

[CreateDate] [datetime] NOT NULL

) ON [PRIMARY]

ALTER TABLE A WITH NOCHECK

ADD CONSTRAINT [PK_A] PRIMARY KEY CLUSTERED

(CreateDate ASC,ID ASC)

GO

CREATE NONCLUSTERED INDEX C_CreateDate ON A(CreateDate ASC)

WITH

FILLFACTOR=50

GO

--CREATE UNIQUE NONCLUSTERED INDEX U_NONC_ID ON A(ID)

--WITH

--FILLFACTOR=50

declare @cnt int set @cnt=0

declare @Monday datetime set @Monday=getdate()

while @cnt10

begin

insert into A(ID,CreateDate) values (newid(),dateadd(s,@cnt,@Monday))

set @cnt=@cnt+1

end

SELECT [ID],[CreateDate] FROM [LEdwin].[dbo].[A]

--------

执行结果:

429BE969-2F91-4603-B0C5-D38CCDA7C069 2012-11-17 09:11:50.513

0D5B03D1-5739-4202-A875-95982A986751 2012-11-17 09:11:51.513

AC02C770-9FB3-44E9-AA14-00E80B473EFB 2012-11-17 09:11:52.513

1FEDAA92-95C6-437A-8D84-7DA9F9914501 2012-11-17 09:11:53.513

FFB334F6-BBB2-431D-8856-557BA876BA63 2012-11-17 09:11:54.513

8BA91F63-9643-412C-9F4D-F3DD23E9C4AB 2012-11-17 09:11:55.513

4DCB295D-4B3C-4FEA-9DAB-7DFFCC6BD3312012-11-17 09:11:56.513

EBDB669D-1D99-4BC8-90B1-04D46AA8D876 2012-11-17 09:11:57.513

FFD9DFF1-14DF-4D18-9888-3E67A5E81614 2012-11-17 09:11:58.513

C22B1E6C-E1F8-4901-A8B7-A5F7EB9551F0 2012-11-17 09:11:59.513

----

这样直接查看就可以。

怎么让SQLServer的id按照数字大小顺序排序

可以通过 “order by 字段名 asc (desc)” 命令进行排序。

sql:select * from tablename order by id DESC;

用 DESC 表示按倒序排序(即:从大到小排序) ,用 ACS 表示按正序排序(即:从小到大排序)。

参考资料

csdn.csdn[引用时间2018-1-28]

sqlserver 排序问题

sSql = "SELECT * FROM 成绩表 order by 成绩 desc"

直接改成:

sSql = "update 成绩表 set 位次=(select count(1) from 成绩表 b where b.成绩成绩表.成绩)+1"

就完成了您的所有任务!您一试便知有多爽

==========================

update 成绩表 set 位次=(select count(1) from 成绩表 b where b.成绩成绩表.成绩 and 班级='200901')+1 where 班级='200901'

这样是只对一个班单独排序

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

select * from (

select id,title,notice,begintime,endtime,row_number() over(order by begintime) rn_asc,

row_number() over(order by begintime desc) rn_desc

from table_xxx)t

order by notice,case when notice=0 then rn_asc else rn_desc


本文名称:sqlserver表排序,sqlserver查询排序
文章分享:http://azwzsj.com/article/dsccjjh.html