2016-03-30 10 views
2

私はzeusとhadesの2つのデータベースを持っています。どちらのデータベースにもwxrecordというフィールドがあります。 Hadesでは、wxrecordはUNIXのタイムスタンプです。異なるデータベースから入れ子になったSELECTを使用したMYSQL UPDATE

hade.wxdataのSELECT/INSERTを使用して、zeus.alldataで新しいレコードを作成します。これにはhades.wxdataのwxrecordが含まれます。

新しいレコードがzeus.alldataで作成されたら、いくつかの計算を実行してから、その計算結果を1つの列に更新する必要があります。

私はzeusを更新したいと思いますが、zeusの特定のレコードは、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つのクエリ内の1つのテーブルと同じテーブルを更新および選択することはできません。 'alldata'テーブルの' INNER JOIN'をクエリに入れてみることができます。もっと見る:http://stackoverflow.com/questions/4268416/sql-update-with-sub-query-that-references-the-same-table-in-mysql – mitkosoft

答えて

1

をいただければ幸い、私はあなたが実際にこれをしたいと推定しますクエリ:

UPDATE zeus.alldata 
    SET A = '50' 
    WHERE wxrecord = (SELECT max(wxrecord) FROM hades.wxdata); 

これにより、最大レコード値がhadesのレコードがzeusに更新されます。

+0

ありがとう、それは素晴らしい! – Richard

関連する問題