如何使列值从1开始自动递增而不使用身份? [英] How to make column value auto incremented starting from 1 without use identity?

查看:85
本文介绍了如何使列值从1开始自动递增而不使用身份?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好。

我有问题,我将数据从一个表复制到另一个表,我希望我的一个列值应该从1开始,并在插入的每一行中递增复制表。

i在另一列上使用身份属性,所以我不能再使用它了。

我正在使用子查询。

这是我的代码:



  insert  进入 tbExaminer(iStudentId_FK,iSubjectId_FK,iTokenID_FK, / *  此列应为auto incr  - > >> * /   iQno_FK ,sQuestion,sAns1,sAns2,sAns3,sAns4,iRightAns,iMarks,sType,dOnDated,iResponse)
选择 1 1 1 ' 这里要做什么来获取incr值' ,sQuestion,sAns1,sAns2,sAns3,sAns4,iRightAns,iMarks,sType, CONVERT VARCHAR 10 ),GETDATE(), 105 ), 0 来自 tbQuestionBank
其中​​ iSubjectIdFK = 1





这里我希望 iQno_FK 列的值递增值..

请帮助排序这个..

提前谢谢

解决方案

你可以使用身份栏随时都有,没有问题。只有当主键已经存在于你的表中时才能使它成为主键



 create table #tblStudent 

ID int主键标识(1,1),
编号UNIQUEIDENTIFIER DEFAULT NEWID(),
名称nvarchar(50)






  插入 tbExaminer(iStudentId_FK,iSubjectId_FK,iTokenID_FK, / *  此列应为auto incr  - >>> * /  iQno_FK,sQuestion,sAns1,sAns2,sAns3,sAns4,iRightAns,iMarks,sType,dOnDated,iResponse)
< span class =code-keyword>选择 1 1 1 ,ROW_NUMBER() OVER ORDER BY GETDATE()) ,sQuestion,sAns1,sAns2,sAns3,sAns4,iRightAns,iMarks,sType, CONVERT VARCHAR (< span class =code-digit> 10 ),GETDATE(), 105 ), 0 来自 tbQuestionBank
其中 iSubjectIdFK = 1


如果是批量插入,您可以使用ROW_NUMBER [ ^ ]在select语句中运行以获取正在运行的数字...

对于单个插入,您可以使用类似的子查询(从[table]中选择max(iQno_FK)+ 1)作为价值......


Hello to everyone.
I have a problem, I am copying data from one table to another table and i want one of my column value should be start from 1 and incremented in every row inserted in copying table.
i have use identity property on another column so i can't use it again.
I am using subquery.
This is my code:

insert into tbExaminer (iStudentId_FK, iSubjectId_FK, iTokenID_FK,/*this column should be auto incr ->>>*/ iQno_FK, sQuestion, sAns1, sAns2, sAns3, sAns4, iRightAns, iMarks, sType, dOnDated, iResponse)
select 1, 1, 1, 'what to do here to get incr value', sQuestion, sAns1, sAns2, sAns3, sAns4, iRightAns, iMarks, sType, CONVERT(VARCHAR(10), GETDATE(), 105), 0 from tbQuestionBank
where iSubjectIdFK = 1



Here value of iQno_FK column i want to incremented value..
please help to sort this..
Thanks in advance

解决方案

You can use identity column any time, there is no issue in that. Only do not make it primary key if it primary key already there in your table

create table #tblStudent
(
    ID int primary key identity(1,1),
    Number UNIQUEIDENTIFIER DEFAULT NEWID(),
    Name nvarchar(50)
)


Try this.


insert into tbExaminer (iStudentId_FK, iSubjectId_FK, iTokenID_FK,/*this column should be auto incr ->>>*/ iQno_FK, sQuestion, sAns1, sAns2, sAns3, sAns4, iRightAns, iMarks, sType, dOnDated, iResponse)
select 1, 1, 1, ROW_NUMBER() OVER(ORDER BY GETDATE()), sQuestion, sAns1, sAns2, sAns3, sAns4, iRightAns, iMarks, sType, CONVERT(VARCHAR(10), GETDATE(), 105), 0 from tbQuestionBank
where iSubjectIdFK = 1


If it a bulk insert you can use ROW_NUMBER[^] function in your select statement to get a running number...
For single insert you may use a sub-query like (select max(iQno_FK) + 1 from [table]) as the value...


这篇关于如何使列值从1开始自动递增而不使用身份?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆