来自不同数据库

时间:2016-03-30 15:05:40

标签: php mysql sql-update

我有两个数据库: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

任何帮助将不胜感激

1 个答案:

答案 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最大记录值的记录。