将数据添加到 table 中的新列(插入或更新)

Adding data to new column in table (insert into or update)

我试图实现的是更新所有数据,因此新数据进入 Row_ID 和所有其他列。

我创建了一个 table db.test 我添加了新列 Row_ID(integer)

这是第一个向 table

插入数据的代码
 Insert into db.test
    (
      STRING0 ,
      CONTACT ,
      STRING2 ,
      TEMPLATE,
      NAME ,
      EXEC_ID, 
      SENDDATE,
      OPENDATE,
      CLICKDATE
    ) 
    SELECT 
      acc.STRING0 ,
      a.CONTACT ,
      acc.STRING2 ,
      a.TEMPLATE ,
      a.NAME ,
      a.EXEC_ID, 
      a.SENDDATE,
      A.OPENDATE,
      A.CLICKDATE 
    FROM db.account acc 
    Join db.activity a  
      ON acc.object_id = a.rep_contact
    left JOIN db.VAL v1 
      ON v1.row_id = a.CAMPAIGN_TYPE 
     AND (v1.OBJ_FIELD_ID in(850)) 
    left JOIN db.VAL v2 
      ON v2.row_id = a.CAMPAIGN_TYPE 
     AND (v2.OBJ_FIELD_ID in(851))

ROW_ID 的值来自 table db.VAL,但我是否使用这样的更新

Update db.test
( row_id, -- This column as integer has greated
 string0, 
 etc...)
 Select
 v1.row_Id,
 acc.STRING0,
 etc....
 Ending is the same

我试过这种更新查询,但是没有用。 我应该改变什么? 因为我更愿意只更新 table,而不是删除、创建新数据和所有新数据。

注意! SQL服务器(Sybase)

由于数据已插入 table,现在您必须更新 新列 row_id 中的值。以下伪代码将起作用 只需确保 from 子句获取 v1.row_Id:

的正确值
UPDATE   db.test 
SET row_id = v1.row_Id
FROM db.test t1
JOIN db.account acc ON acc.STRING0 = t1.STRING0 
--all match columns will go here
AND  acc.STRING2 = t1.STRING2
JOIN db.activity a  ON acc.[object_id] = a.rep_contact 
AND  a.CONTACT = t1.CONTACT
AND  a.TEMPLATE = t1.TEMPLATE
AND  a.NAME = t1.NAME
AND a.EXEC_ID = t1.EXEC_ID
AND a.SENDDATE = t1.SENDDATE
AND A.OPENDATE = t1.OPENDATE
AND A.CLICKDATE = t1.CLICKDATE
LEFT JOIN db.VAL v1 ON v1.row_id = a.CAMPAIGN_TYPE 
AND (v1.OBJ_FIELD_ID in(850))   
LEFT JOIN db.VAL v2 ON v2.row_id = a.CAMPAIGN_TYPE 
AND (v2.OBJ_FIELD_ID in(851))