次のコードを更新して列を追加したり削除したりするにはどうすればよいですか?MySQL:このコードを再構成して中間列を追加および削除する方法
このコードは、「3ヤード」(「長さ」という名前)の値を持つ列から数値列(「LengthFloat」という名前)の値を計算します。
alter table sometable add Value float;
alter table sometable add Units varchar(15);
Update sometable
set Value = SUBSTRING_INDEX(SUBSTRING_INDEX(Length, ' ', 1), ' ', -1),
Units = SUBSTRING_INDEX(SUBSTRING_INDEX(Length, ' ', 2), ' ', -1);
update sometable
set LengthFloat = case Units
when 'yards' then Value*3
when 'yard' then Value*3
when 'feet' then Value
when 'foot' then Value
end;
alter table sometable drop column Value;
alter table sometable drop column Units;
テーブルの更新を行うために更新しようとすると、エラーが発生する必要があります。 –
ベーステーブルとビュー(ランダムな 'unit'sで' value'を合成する)とselect(一貫した 'feet'を合成する)はすべて' id'を提供します。更新する際には、選択項目「ON ID」で基本表にJOINしてください。より良いことに、「足」や「メートル」のような賢明な列を維持してください(面積測定用の「納屋」ではなく)ので、狂った中間結果を合成する必要はありません。それを新しい永続的な列にするか、またはJOINできる別のテーブルに入れます。 –
私は仕事に参加しました。何らかの理由で、これは非常にゆっくりと実行されます。私はそれを殺してしまったので、最初の1,000行で動かしました。それは65秒かかりました(!!!)。タスクマネージャを見ると、CPUは28%(ほぼすべてmysql)で動作し、メモリ使用量は44%で、ディスク使用率は0%から4%、通常は0%で増加しました。私はすでに自分のばかげた値を置き換えるためにmy.cfgを最適化しているので、私の12GBのRAMがより良く利用されます。 –