2015-12-22 2 views
1

Я стараюсь обновить все данные, поэтому новые данные передаются в Row_ID и все остальные столбцы.Добавление данных в новый столбец в таблице (вставка или обновление)

У меня есть таблица, созданная db.test Я добавил новый столбец ROW_ID (целое число)

Это ISE первый код для вставки данных в таблице

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 приходит из таблицы БД .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 

Я пробовал такой запрос на обновление, но он не работал. Что я должен изменить? Потому что я бы предпочел просто обновить таблицу, не отбрасывать, создавать новые и все новые данные.

NB! SQL Server (Sybase)

+0

вы должны использовать 'SET' – MaxPD

+0

Я не могу понять, что вы пытаетесь сделать здесь. .. Вы хотите заменить строки? Все они, или просто некоторые? – jarlh

+0

я на колонках STRING0, CONTACT, STRING2, ШАБЛОН, NAME, EXEC_ID, SENDDATE, OPENDATE, CLICKDATE данных вставленные, но я обнаружил, что мне нужно, чтобы добавить новый столбец с данными. Так что я не хочу бросать стол, но добавьте данные для этого конкретного столбца Aka ROW_ID – N2hvits

ответ

1

Поскольку данные уже вставлены в таблицу, теперь вам нужно будет обновить значения в новом столбце row_id. После псевдо-код будет работать просто убедитесь, что из пункта выбирает правильное значение 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)) 
+0

Под «все столбцы соответствия пройдут здесь» вы имеете в виду Я добавлю их вот так (Столбец 1, Столбец 2, колонка 3)? – N2hvits

+0

Нет, я хотел обновить таблицу 'db.Test', вам придется сопоставлять каждую строку в одной таблице с остальной частью данных (из всех других таблиц), например:' acc.STRING2 = t1.STRING2' – Deepshikha

Смежные вопросы