我有两个数据库:zeus和hades。两个数据库都有一个名为wxrecord的字段。在Hades上,wxrecord是一个Unix时间戳。
我使用hades.wxdata中的SELECT / INSERT在zeus.alldata中创建一条新记录。这包括来自hades.wxdata的wxrecord。
在zeus.alldata上创建新记录后,我需要运行一些数学计算,然后使用该计算的输出更新单个列。
我想更新宙斯,但只更新与其对应的hades对应记录相对应的宙斯特定记录。我想在两者上匹配max wxrecord并且只要它们相等就更新。
以下是我的尝试:
UPDATE zeus.alldata SET A='50' WHERE (SELECT max(wxrecord) FROM zeus.alldata) = (SELECT max(wxrecord) FROM hades.wxdata);
我一直收到这个错误:
ERROR 1093 (HY000): You can't specify target table 'alldata' for update in FROM clause
任何帮助将不胜感激
答案 0 :(得分:1)
无论如何,我认为你确实想要这个查询:
with x as (
select
ROW_NUMBER() OVER (
PARTITION BY
iee_nom, iee_departemen, iee_type
ORDER BY
<pick your priority column here>
)rID,
*
from insee
)
delete from x where rID > 1
这将更新UPDATE zeus.alldata
SET A = '50'
WHERE wxrecord = (SELECT max(wxrecord) FROM hades.wxdata);
中具有zeus
最大记录值的记录。