Я делаю выбор из таблицы, чтобы заполнить значения для обновления в моей постоянной таблице. 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 |
+--------------+------------+
Внутренние соединения могут использоваться с обновлениями.
UPDATE FollowUpTbl f
INNER JOIN RowsToUpdateFollowUps rtufu ON rtufu.FollowUpID = f.FollowUpID
SET f.FollowUpDate = DATE_ADD(
NOW(),
INTERVAL (rtufu.FollowUpDays) DAY
);
Попробуйте следующее:
update FollowUpTbl as f
inner join RowsToUpdateFollowUps as t using (FollowUpID)
set f.FollowUpDate = DATE_ADD(NOW(), interval t.FollowUpDays DAY);
rtufu определяется во внутреннем (ака вложенном) выборе. Он не имеет видимости во внешнем обновлении.
Синтаксис запроса немного искалечен. Попробуйте это.
UPDATE FollowUpTbl
SET
FollowUpDate = (
SELECT
DATE_ADD(NOW(), INTERVAL (rtufu.FollowUpDays) DAY)
FROM RowsToUpdateFollowUps rtufu
WHERE rtufu.FollowUpID = FollowUpTbl.FollowUpID
);