обновить данные на основе другой таблицы - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть пользовательская таблица со следующими полями

id           int
name         varchar
dob          date/time

Теперь у меня есть еще одна таблица с именем user_map table, с 2 полями

oldid        int
newid        int

таблица user_map используется для хранения отображения идентификатора пользователя, поле oldid - это старый идентификатор пользователя (который является текущим идентификатором пользователя из таблицы пользователя), а newid - идентификатор пользователя, который будет назначен

Мне нужен один запрос на обновление, который может обновить идентификатор пользователя для всех пользователей в пользовательской таблице

Как это должно работать? Что ж, для каждого идентификатора в пользовательской таблице в таблице user_map будет совпадать только 1 запись.

идентификатор из пользовательской таблицы соответствует oldid из таблицы user_map, и его следует заменить на newid

Например (игнорируйте поле dob, пожалуйста)

таблица пользователей

       id                   name                     dob
        1                    aaa                     0000-00-00 00:00:00
        2                    bbb                     0000-00-00 00:00:00
        3                    ccc                     0000-00-00 00:00:00

таблица пользовательских таблиц

      oldid       newid
        1           6   
        2           7   
        3           8   

После запроса таблица пользователя должна выглядеть как

таблица пользователей

       id                   name                     dob
        6                    aaa                     0000-00-00 00:00:00
        7                    bbb                     0000-00-00 00:00:00
        8                    ccc                     0000-00-00 00:00:00

как мне этого добиться? это возможно только в 1 запросе?

Ответы [ 3 ]

0 голосов
/ 22 сентября 2011

Проверить следующий запрос

update `user table` a, `user_map` b  set a.id=b.newid where a.id=b.oldid

этого запроса достаточно для обновления основной таблицы

0 голосов
/ 22 сентября 2011

Вы можете попробовать использовать следующее -

обновление пользователя задавать id = um.newid от пользователь un, user_map ит где un.id = um.oldid

0 голосов
/ 22 сентября 2011

Вы пробовали: обновить пользователя, установить user_map set user.id = user_map.newid где user.id = user_map.oldid;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...