表格的格式如下:
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
*/
------解决方案--------------------
哦,上面是构造实验数据,你直接运行这个查询试试,把表的名字改成你的,还有字段:
select ID,NAME,
(select COUNT(*) from tb t2 where t1.id >= t2.id) as ischeck