MySQL пытается обновить таблицу из значений, хранящихся во временной таблице - PullRequest
0 голосов
/ 27 ноября 2010

Я делаю выбор из таблицы, чтобы заполнить значения для обновления в моей постоянной таблице.MySQL жалуется, что «Неизвестный столбец« rtufu.FollowUpDays »в« списке полей »».Что я делаю неправильно?

UPDATE FollowUpTbl 
  SET 
    FollowUpDate = DATE_ADD(NOW(), INTERVAL (rtufu.FollowUpDays) DAY) 
  WHERE FollowUpID IN (SELECT FollowUpID FROM RowsToUpdateFollowUps rtufu);

RowsToUpdateFollowUps (Temporary)
+------------+--------------+
| FollowUpID | FollowUpDays |
+------------+--------------+
|      64417 |           90 |
|      45508 |           90 |
+------------+--------------+

FollowUpTbl
+--------------+------------+
| FollowUpDate | FollowUpID |
+--------------+------------+
| 0000-00-00   |          1 |
| 0000-00-00   |          2 |
+--------------+------------+

Ответы [ 4 ]

1 голос
/ 27 ноября 2010

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

update FollowUpTbl as f
    inner join RowsToUpdateFollowUps as t using (FollowUpID)
set f.FollowUpDate = DATE_ADD(NOW(), interval t.FollowUpDays DAY);
0 голосов
/ 27 ноября 2010

Внутренние объединения могут использоваться с обновлениями.

UPDATE FollowUpTbl f 
INNER JOIN RowsToUpdateFollowUps rtufu ON rtufu.FollowUpID = f.FollowUpID 
SET f.FollowUpDate = DATE_ADD(
    NOW(), 
    INTERVAL (rtufu.FollowUpDays) DAY
);
0 голосов
/ 27 ноября 2010

rtufu определяется в «внутреннем» (он же вложенный) выборе. У него нет видимости в «внешнем» обновлении.

0 голосов
/ 27 ноября 2010

Ваш синтаксис запроса немного искажен.Попробуйте это.

UPDATE FollowUpTbl 
  SET 
    FollowUpDate = (
      SELECT
          DATE_ADD(NOW(), INTERVAL (rtufu.FollowUpDays) DAY)
          FROM RowsToUpdateFollowUps rtufu
          WHERE rtufu.FollowUpID = FollowUpTbl.FollowUpID
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...