注册 登录
编程论坛 SQL Server论坛

怎么在SQL介面上执行新增搜寻到的资料

yz1025 发布于 2020-05-07 16:17, 3103 次点击
在SQL介面上搜寻到的指令 :

SELECT ROW_NUMBER() OVER (ORDER BY A.ProjectNo) AS RowNo,A.ProjectNo,A.ProjectName,A.CateMainID,A.CateSubID,A.CreatorNo,C.ItemName,C.CreatorNo,D.ItemNo FROM [tblProject] AS A
INNER JOIN [tblBasCategory] AS B ON A.CateMainID = B.CateMainID AND A.CateSubID = B.CateSubID and A.ReleaseDate IS NULL
INNER JOIN [tblProjectItem] AS C ON A.ProjectNo = C.ProjectNo
INNER JOIN [tblProjectDevpHistory] AS D ON A.ProjectNo = D.ProjectNo and C.ItemNo = D.ItemNo
WHERE D.DHDate >= '2020-04-01' AND D.DHDate <= '2020-05-07' And A.ProjectNo < 'S2020' Group by A.ProjectNo,A.ProjectName,A.CateMainID,A.CateSubID,A.CreatorNo,C.ItemName,C.CreatorNo,D.ItemNo

搜到共数十笔纪录,该如何将这些纪录,只更换新的ProjectNo,循环插入两个资料表(tblProject,tblProjectItem)内?
10 回复
#2
mywisdom882020-05-08 08:52
你能查询到数据,就能更新到数据。条件相同,只是1个用Select ,1个用 Update
#3
yz10252020-05-08 12:24
以下是引用mywisdom88在2020-5-8 08:52:46的发言:

你能查询到数据,就能更新到数据。条件相同,只是1个用Select ,1个用 Update


不,我是要INSERT INTO查询到的数据变成新的数据资料(树状目录顶层),过期的则要归档。
我想知道这个操作能直接在SQL上使用指令跑出来吗?不然我就得在Web内用.Net写一个代码去跑了。

因为这需求是一年只做一次。
#4
mywisdom882020-05-09 10:02
insert into 可以和 select 联合使用的
#5
yz10252020-05-14 15:15
以下是引用mywisdom88在2020-5-9 10:02:39的发言:

insert into 可以和 select 联合使用的


能给个范例吗?
#6
yz10252020-05-14 15:50
我先用,但是如果insert into 可以和 select 联合使用
https://bbs.bccn.net/thread-501607-1-1.html
#7
mywisdom882020-05-15 08:41
语法:
2表字段不同
insert into 表1(字段1,字段2,字段3,字段n) select 字段1,字段2,字段3,字段n from 表2
2表字段相同
insert into 表1 select * from 表2
所以,只要你能写出查询语句,就可以
#8
yz10252020-05-15 10:20
以下是引用mywisdom88在2020-5-15 08:41:11的发言:

语法:
2表字段不同
insert into 表1(字段1,字段2,字段3,字段n) select 字段1,字段2,字段3,字段n from 表2
2表字段相同
insert into 表1 select * from 表2
所以,只要你能写出查询语句,就可以



问题是要是一次查出很多笔资料,需要做多次insert into?

insert into 表1(字段1,字段2,字段3,字段n) select 字段1,字段2,字段3,字段n from 表2
这只跑一次一笔插入吧?
#9
yz10252020-05-15 12:53
以下是引用yz1025在2020-5-15 10:20:34的发言:




问题是要是一次查出很多笔资料,需要做多次insert into?

insert into 表1(字段1,字段2,字段3,字段n) select 字段1,字段2,字段3,字段n from 表2
这只跑一次一笔插入吧?


我需要的单次查询多次插入,大概像这样,这种有办法只用一段SQL语法解决吗?
https://bbs.bccn.net/thread-501607-1-1.html
#10
mywisdom882020-05-17 09:22
因为每段SQL查询到的资料是下一段查询语句的条件,再加上必须跑回圈去执行?
这就是一个标准的关联查询,可以写成这样的格式
select t2.* from (select t1.* from (select * from 表1 where ....) as t1 where ...) as t2 where ...
#11
sssooosss2020-06-15 08:50
学习了
1