MySQL试图从存储在临时表中的值更新表

时间:2010-11-27 19:22:00

标签: mysql select temp-tables

我正在从表中进行选择以填充要在我的永久表中更新的值。 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 个答案:

答案 0 :(得分:1)

试试这个:

update FollowUpTbl as f
    inner join RowsToUpdateFollowUps as t using (FollowUpID)
set f.FollowUpDate = DATE_ADD(NOW(), interval t.FollowUpDays DAY);

答案 1 :(得分:0)

您的查询语法有点严重。试试这个。

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

答案 2 :(得分:0)

rtufu在'inner'(又名嵌套)选择中定义。它在“外部”更新中没有可见性。

答案 3 :(得分:0)

内部联接可以与更新一起使用。

UPDATE FollowUpTbl f 
INNER JOIN RowsToUpdateFollowUps rtufu ON rtufu.FollowUpID = f.FollowUpID 
SET f.FollowUpDate = DATE_ADD(
    NOW(), 
    INTERVAL (rtufu.FollowUpDays) DAY
);