Обновить значение одной записи значением другой записи в той же таблице

У меня есть сложный вопрос по SQL для вас, ребята. Я работаю с модулем веб-формы drupal.

Как работает этот модуль:
- каждый элемент веб-формы является новой записью в таблице 'webform_submitted_data',
- sid = зарегистрированный пользователь
- cid = поле веб-формы

Структура таблицы:

НИД | SID | Идентификатор | НЕТ | ДАННЫЕ

1 --- 168 --- 1 --- 0 --- ХХХ

1 --- 168 --- 2 --- 0 --- ГГГ

Проблема: - CID 64 должен быть обновлен значением CID 56 того же SID.


person Yves Van Laer    schedule 03.11.2011    source источник


Ответы (2)


Я думаю, что это должно быть следующим образом:

UPDATE webform_submitted_data as a, webform_submitted_data as b 
SET a.data = b.data WHERE a.sid = b.sid AND a.cid = 64 AND b.cid = 56

По сути, вы самостоятельно присоединяетесь к таблице (сопоставляя SID), а затем у вас есть оба поля в запросе, поэтому вы можете просто обратиться к каждому из них сразу.

person Aurimas    schedule 03.11.2011
comment
почти правильно, но копировать надо не cid, а данные этого cid :) - person Yves Van Laer; 03.11.2011

Это скопирует данные CID 56 в CID 64 для каждого значения SID. Это синтаксис SQL Server.

update  yt64
set     Data = yt56.Data
from    YourTable yt64
join    YourTable yt56
on      yt64.SID = yt56.SID
where   yt64.CID = 64
        and yt56.CID = 56
person Andomar    schedule 03.11.2011