我尝试实现的是更新所有数据,因此新数据将进入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)
答案 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))