我想创建一个连接,我可以根据另一个表中字段的新旧值更新字段。例如:
UPDATE
table1,
table2
SET
table1.field1 = newDate
table2.field2 = table1.field1 -- The NEW date I am setting above in field1 ^
WHERE
table2.field2 = table1.field1 -- The OLD date currently set in table1.field1
这可能吗?我尝试使用new
和old
条款,但不起作用。
修改 如果你非常友好地无缘无故地投票。请以某种方式贡献......
答案 0 :(得分:1)
我可以建议您将查询短语为:
UPDATE table1 JOIN
table2
ON table2.field2 = table1.field1
SET table1.field1 = newDate,
table2.field2 = newDate
似乎消除了引起混淆的歧义。
编辑:
您似乎非常希望只引用newDate
一次。您可以使用子查询执行此操作:
UPDATE table1 JOIN
table2
ON table2.field2 = table1.field1 CROSS JOIN
(select @newDate as newDate) vars
SET table1.field1 = vars.newDate,
table2.field2 = vars.newDate;
我不清楚动机,但这提供了一种只提及它的机制。
如果它可以帮助您了解更新,请根据SQL标准考虑它们的工作方式。在将值提交到数据库之后才会发生update
。也就是说,没有"新的"正在处理update
时表中的值。 MySQL并不一定以这种方式运行,但这是update
工作原理的一个很好的模型。