从最大值中提供Id

时间:2015-12-11 10:07:21

标签: sql sql-server-2005

我有如下查询,

Select max(Mkey) from p_leave_allocation

它为max(Mkey)提供了1643

现在我想插入另一个表格p_leave_allocation_11122015mkey应该从1644开始

那么查询会是什么?

更新

我将插入这样的数据

INSERT INTO p_leave_allocation_11122015(Mkey, Entry_Sr_no, Comp_mkey,FDepartment_Id,FModule_Id,Year, Emp_mkey, Emp_card_no, U_Datetime, Delete_Flag,Month12)SELECT Mkey,Entry_Sr_no, Comp_mkey,FDepartment_Id,FModule_Id,Year,Emp_mkey,Emp_card_no,U_Datetime,Delete_Flag,Month12FROM p_leave_allocation

我正在使用sql-server-2005

1 个答案:

答案 0 :(得分:1)

除了向您的表添加IDENTITIY的建议外,您可以尝试这样:

ROW_NUMBER()将显示一个以1开头的行计数器。如果添加最大值,则"创建"正在运行的ID ......

INSERT INTO p_leave_allocation_11122015(Mkey, Entry_Sr_no, Comp_mkey,FDepartment_Id,FModule_Id,Year, Emp_mkey, Emp_card_no, U_Datetime, Delete_Flag,Month12)
SELECT ROW_NUMBER() OVER(ORDER BY p_leave_allocation.MKey) + 1643
      ,Entry_Sr_no, Comp_mkey,FDepartment_Id,FModule_Id,Year,Emp_mkey,Emp_card_no,U_Datetime,Delete_Flag,Month12
FROM p_leave_allocation 

编辑:如果您不想写最大值,您也可以在其中放置相应的(SELECT MAX(MKey) FROM Somewhere)语句(括号内)......