Insert语句中的SQL Select

Insert语句中的SQL Select,sql,Sql,如何组合这两个脚本?我基本上不想在query2中硬编码编号34。我希望脚本获取下一个编号的作业id。query1返回34,因此query2应将35作为作业id 查询1 select top 1 job_id from job order by job_id desc 查询1的输出-34 查询2 insert into job (job_id, name) values (35, 'Defend them') 这个怎么样 insert into job (job_id, name) selec

如何组合这两个脚本?我基本上不想在
query2
中硬编码编号
34
。我希望脚本获取下一个编号的作业id。
query1
返回
34
,因此
query2
应将
35
作为
作业id

查询1

select top 1 job_id from job
order by job_id desc
查询1的输出-34

查询2

insert into job (job_id, name)
values (35, 'Defend them')
这个怎么样

insert into job (job_id, name)
select top 1 job_id+1, 'Defend them'
from job
order by job_id desc
这个怎么样

insert into job (job_id, name)
select top 1 job_id+1, 'Defend them'
from job
order by job_id desc

通过将
job\u id
定义为
identity
列来实现:

create table jobs (
     job_id int identity(1, 1) primary key,
     name varchar(255)
);
然后你可以做:

insert into jobs (name)
    values ('Defend them');

SQL Server会分配作业id。

您可以通过将
作业id
定义为
标识列来完成此操作:

create table jobs (
     job_id int identity(1, 1) primary key,
     name varchar(255)
);
select     top 1 job_id, 'Defend them' 
into       job (job_id, name)
from       job
order by   job_id DESC
然后你可以做:

insert into jobs (name)
    values ('Defend them');

SQL Server会分配作业id。

无需使用
按作业id描述排序
前1
来获取所需的值
select     top 1 job_id, 'Defend them' 
into       job (job_id, name)
from       job
order by   job_id DESC
您需要
max(作业id)+1

insert into job (job_id, name)
select max(job_id) + 1, 'Defend them'
from job

无需使用
order by job_id desc
top 1
来获取所需的值
您需要
max(作业id)+1

insert into job (job_id, name)
select max(job_id) + 1, 'Defend them'
from job

简要说明这部作品如何/为什么对未来的读者非常有帮助。简要说明这部作品如何/为什么对未来的读者非常有帮助。