克隆现有记录并修改一个字段。周期

克隆现有记录并修改一个字段。周期

问题描述:

我的问题是以下几点:克隆现有记录并修改一个字段。周期

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表已经具有完全相同的关系,则跳过该记录并继续。

谢谢。

+1

你可以使用一个数字/ Tally表,就像这个[问题](http://*.com/questions/1393951/what-is-the-best-way-to-create-and-populate-a -numbers-table) – ughai

+0

感谢ughai,但不幸的是它并没有帮助解决这个问题:( – Yvanhoe

根据您的更新问题, 可以JOINworksWithWho,做这样的事情。

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 
  1. INNER JOIN jaikudo j1 ON j1.createdByWho = 1被添加到获得详细信息createdbyWhorelatedToWho
  2. LEFT JOIN jaikudo j ON j.worksWithWho = w.id WHERE j.id IS NULL被添加到只添加那些具有相同worksWithWho犯规的记录已经存在

注意记录:使用w.id或任何列存储的引用在您的worksWithWho表中。

+0

很好,谢谢,但主要问题仍然是同样的:我怎么可以批量创建记录到jaikudo表的基础上?这只会列出所需的,但不插入:( – Yvanhoe

+0

它的非常简单,只需在'SELECT'之前添加'INSERT INTO jaikudo(id,created,createdByWho,relatedToWho,worksWithWho)'' – ughai

+0

好东西谢谢。我也太过于复杂化整个事情。 – Yvanhoe

你可以试试这个:

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 
+0

嗨NguyễnHảiTriều!对不起,很痛苦,我没有提到过,那个worksWithWho数据是完整的随机记录。 1和5000.有可能有一个worksWithWho = 1252452的记录。我的意思是描述它大约有5000条记录......感谢您的快速反应。 – Yvanhoe