克隆现有记录并修改一个字段。周期
我的问题是以下几点:克隆现有记录并修改一个字段。周期
SQL表具有多个记录,多个属性。
让选择它:
select * from jaikudo
回报:
(id, created, createdByWho,relatedToWho,worksWithWho)
工作落实:
当我:select * from jaikudo where createdByWho = 1
返回1个记录。
我有约5000个记录的表与worksWith表。 ID是PK,不necessearely上升或下降,但随机数
当我:select * from worksWithWho
回报(ID,创建,createdByWho)基础上,
我需要记录插入到jaikudo表以下
`select * from jaikudo where createdByWho = 1`
返回1条记录(ID,创建,createdByWho,relatedToWho,worksWithWho)
COP y详细信息:(createdByWho,relatedToWho)
创建将拉动getdate()信息并插入如下:
在jaikudo表中为每个worksWithWho数据从以下查询中复制的数据:select * from jaikudo where createdByWho = 1
完成后,我必须在jaikudo表中创建约5000条新记录,但如果可能的话,一些错误检测将会很好如果jaikudo表已经具有完全相同的关系,则跳过该记录并继续。
谢谢。
根据您的更新问题, 可以JOIN
与worksWithWho
,做这样的事情。
INSERT INTO jaikudo(id, created, createdByWho,relatedToWho,worksWithWho)
SELECT
CHECKSUM(NEWID()) as id,
GETDATE() as created,
j1.createdbyWho,
j1.relatedToWho,
w.worksWithWho
FROM worksWithWho w
INNER JOIN jaikudo j1
ON j1.createdByWho = 1
LEFT JOIN jaikudo j
ON j.worksWithWho = w.id
WHERE j.id IS NULL
-
INNER JOIN jaikudo j1 ON j1.createdByWho = 1
被添加到获得详细信息createdbyWho
和relatedToWho
-
LEFT JOIN jaikudo j ON j.worksWithWho = w.id WHERE j.id IS NULL
被添加到只添加那些具有相同worksWithWho
犯规的记录已经存在
注意记录:使用w.id
或任何列存储的引用在您的worksWithWho
表中。
你可以试试这个:
DECLARE @max_worksWithWho INT = 1
WHILE @max_worksWithWho <= 5000
BEGIN
INSERT INTO jaikudo
SELECT id, created, createdByWho, relatedToWho, @max_worksWithWho
FROM jaikudo
WHERE createdByWho = 1
AND worksWithWho NOT IN (SELECT worksWithWho FROM jaikudo WHERE createdByWho = 1)
SET @max_worksWithWho = @max_worksWithWho + 1
END
嗨NguyễnHảiTriều!对不起,很痛苦,我没有提到过,那个worksWithWho数据是完整的随机记录。 1和5000.有可能有一个worksWithWho = 1252452的记录。我的意思是描述它大约有5000条记录......感谢您的快速反应。 – Yvanhoe
你可以使用一个数字/ Tally表,就像这个[问题](http://*.com/questions/1393951/what-is-the-best-way-to-create-and-populate-a -numbers-table) – ughai
感谢ughai,但不幸的是它并没有帮助解决这个问题:( – Yvanhoe