将数据添加到 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))
我试图实现的是更新所有数据,因此新数据进入 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))