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查询排序
网页URL:http://ybzwz.com/article/dsccjjh.html