Обновить набор столбцов с критериями, основанными на другой таблице? - PullRequest
2 голосов
/ 16 июля 2010

У меня есть две таблицы:

table_1 - ControlID, код, ReportedDate, возраст FiledDate, AgeCategory и т. Д.,

table_2 - ControlID, код, ReportedDate, FiledDate и т. Д..,

ControlID в table_1 - это Внешний ключ , тогда как отсутствует в table_2 .Мне нужно обновить ReportedDate в table_1 с ReportedDate в table_2 и Age и AgeCatogory были рассчитаны и хорошо.

Я хочу обновить эти три столбца в table_1, где ControlID, FiledDate и Code в обоих идентичные.

Теперь у меня есть:

UPDATE table_1 SET ReportedDate=table_2.ReportedDate, Age='<value>' AgeCategory='<value>'
         WHERE table_1.ControlID=table_2.ControlID AND
         table_1.FiledDate=table_2.FiledDate AND table_1.Code=table_2.Code

Если кто-нибудьесть идея, как это может быть решено ???

Любая помощь будет оценена ...

РЕДАКТИРОВАТЬ:

Я получаю ошибкуговоря синтаксическая ошибка MySQL на 'FROM ...'

Ответы [ 2 ]

0 голосов
/ 16 июля 2010
    UPDATE table_1
    JOIN table_2 
    ON table_1.ControlID=table_2.ControlID
         AND table_1.FiledDate=table_2.FiledDate
         AND table_1.Code=table_2.Code
    SET table_1.ReportedDate=table_2.ReportedDate, 
         table_1.Age='<value>',
         table_1.AgeCategory='<value>';
0 голосов
/ 16 июля 2010

В синтаксисе ОБНОВЛЕНИЯ не разрешено FROM 1 :

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]

Если вы хотите извлечь содержимое из второй таблицы, вы можете использовать подзапрос.

Попробуйте этот код:

UPDATE table_1 SET ReportedDate=
    (SELECT ReportedDate FROM table_2
      WHERE table_1.ControlID = table_2.ControlID
      AND table_1.Code = table_2.Code
    ), Age='<value>' AgeCategory='<value>'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...