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

时间:2015-12-22 09:37:21

标签: sql sybase

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

我有一个创建db.test的表 我添加了新列Row_ID(整数)

这是第一个将数据插入表

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

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

createrIds

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

NB! SQL Server(Sybase)

1 个答案:

答案 0 :(得分:1)

由于数据已经插入表中,现在您必须更新 新列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))