欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

给字段安插编号

更新时间: 2014-01-05 02:17:48 责任编辑: Author_N1

 

给字段插入编号
表格的格式如下:
id  name   ischeck
1   jack     1
2   tony     2
3   amanda   3
4   xiao     4
5   ming     5

问题1 :我如何先根据ID的顺序,给ischeck的列插入编号呢?语句怎么写,注意:我的id不一定是1、2、3   可能一开始就是4、5、6 但是我的ischeck必须是从1开始

插入如上表的编号以后,因为我表格的排序要用ischeck来排序,当我要在id为2、3 中间插入一个值 ,其实就是给ischeck 重新编号我该怎么弄,效果如下表显示

id  name   ischeck
1   jack     1
2   tony     2
3   amanda   4
4   xiao     5
5   ming     6
6   tao      3

这样的更新语句怎么写?求各位帮忙!答者给分!谢谢! 
--参考方法--
05以上的用rownumber()over(order by id)
--参考方法--
2005及以上版本可以这样生成
----------------------------------------------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-12-24 14:24:18
-- Version:
--      Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64) 
-- Dec 28 2012 20:23:12 
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
--
----------------------------------------------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([id] int,[name] varchar(6),[ischeck] int)
insert [huang]
select 1,'jack',null union all
select 2,'tony',null union all
select 3,'amanda',null union all
select 4,'xiao',null union all
select 5,'ming',null
--------------开始查询--------------------------

select ID,NAME,ROW_NUMBER()OVER(ORDER BY id)[ischeck]
 from [huang]
----------------结果----------------------------
/* 
ID          NAME   ischeck
----------- ------ --------------------
1           jack   1
2           tony   2
3           amanda 3
4           xiao   4
5           ming   5
*/

--参考方法--
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

为什么6   tao      3这条等于3?

因为我的ID另有用途 在不能改变ID的情况下 我用Ischeck来排序  sql2000有什么办法不?





if object_id('[tb]') is not null drop table [tb]
go 

create table [tb]([id] int,[name] varchar(6),[ischeck] int)

insert [tb]
select 1,'jack',null union all
select 2,'tony',null union all
select 3,'amanda',null union all
select 4,'xiao',null union all
select 5,'ming',null
go

select ID,NAME,
       (select COUNT(*) from tb t2 where t1.id >= t2.id) as ischeck
from [tb] t1


/*
ID NAME ischeck
1 jack 1
2 tony 2
3 amanda 3
4 xiao 4
5 ming 5
*/

select 1,'jack',null union allselect 2,'tony',null union allselect 3,'amanda',null union allselect 4,'xiao',null union allselect 5,'ming',null  这个我是不是数据库有几条我就要都拆开来写啊



哦,上面是构造实验数据,你直接运行这个查询试试,把表的名字改成你的,还有字段:
select ID,NAME,
       (select COUNT(*) from tb t2 where t1.id >= t2.id) as ischeck
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:17:48
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8143/
本文WWW.DOC100.NET DOC100.NET版权所有。