にはmeterreadings
というテーブルがあります。ある行から別の行に属性meterreading
をコピーする必要があります。ここでこのMySQLアップデートはなぜ動作しませんか?
は、データのサンプルです:
id | meterreadingdate | meterreading | meterreadingtype_id | created
-------------------------------------------------------------------------------
1 | 2011-10-01 | 0 | 1 | 2011-10-15
2 | 2011-10-01 | 500 | 2 | 2011-10-15
だから基本的に、私は2のmeterreadingtype_id
値は1
meterreadingtype_id
列に基づいて
meterreading
すべての値をコピーしたいです完了したら
データは次のようになります。私は理由上で500をコピーし
id | meterreadingdate | meterreading | meterreadingtype_id | created
-------------------------------------------------------------------------------
1 | 2011-10-01 | 500 | 1 | 2011-10-15
2 | 2011-10-01 | 500 | 2 | 2011-10-15
お知らせは1であり、それはここで2
だったので、私は次の行から値を行く私が使用していますクエリです:
update meterreadings mr1
set meterreading =
(
select
meterreading
from meterreadings
where
meterreadingtype_id = 2
and meterreadingdate = mr1.meterreadingdate
and location_id = mr1.location_id
and created = mr1.created
and asset_id = mr1.asset_id
)
where asset_id in (select id from assets where model_id in (select id from models where make_id IN (81, 82)))
and meterreadingtype_id = 1
我々は、MySQL 5とInnoDBテーブルを使用している場合に役立ちます。
申し訳ありません、掲示に問題があります。企業のファイアウォールが実際の更新ステートメントをブロックしています。 – cbmeeks
エラーが発生するか、または0行が更新されますか? –
@Michael編集をありがとう。 Corpのファイアウォールが更新ステートメントの投稿をブロックしていました。 – cbmeeks