Мне нужно обновить поле идентификатора для таблицы, не касаясь других полей - PullRequest
0 голосов
/ 25 октября 2011

У меня есть таблица с именем _field.По какой-то причине поле внутри таблицы с именем block стало грязным и теперь содержит неправильные номера блоков.У меня есть данные по умолчанию для _field, но некоторые другие поля больше не могут быть по умолчанию из-за внешних ограничений и прочего, поэтому я не могу просто восстановить данные по умолчанию.Итак, на данный момент я создал новую таблицу с именем tmp_field и заполнил ее данными по умолчанию _field.

Теперь мне нужен запрос, который берет данные из _field и изменяет все block числа в _field, чтобы соответствовать block числам от tmp_field.

Другой способ выразить это будет следующим:
Проверяется каждая строка _field, и если какое-либо поле (например, fieldid или name) совпадает с тем же полем в tmp_field, тогда оноизменяет значение блока в _field для соответствия значению блока в tmp_field.

Примечание: я использую Postgresql 9.1.

Спасибо за все.

1 Ответ

2 голосов
/ 25 октября 2011
UPDATE _field
    SET block = tmp_field.block
    FROM tmp_field
    WHERE _field.fieldid = tmp_field.fieldid
        OR _field.name = tmp_field.name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...