2008/08/04 (月)

今日も夕方にひどい雷。
光と音が0.5秒以内のこともあって、けっこうドキドキワクワク。
デスクトップPCの電源を落として、コンセントとか引っこ抜いておこうかとも思ったけど、結局そのまま粘って仕事を続けてしまった。

いつものように、東京アメッシュのアニメーションで今後の展開を予想するも、今日は雨が移動しないので予想しづらい。まいるなぁ。。。

2008-06-30:PostgreSQLとMySQLのUPDATE構文

あるテーブルに UPDATE かけたくて、しかし対象行の検索には別のテーブルを結合したいビューを使いたい、という場合のオハナシ。

PostgreSQL の場合、UPDATE 文に FROM 句が使えて、ここに WHERE 句で使いたいテーブル・ビューを記述できる。
例を書くと、

UPDATE table_name as t
   SET target_column_name = value
  FROM view_name as v
 WHERE t.where_column_name = v.where_column_name
   and v.search_column_name = search_value;

のような形。

が、同じことを MySQL でやろうとしたら、怒られた。MySQL では FROM 句が使えない。
MySQL の場合は単純に UPDATE のターゲットテーブルと併記すればよい。

UPDATE table_name as t, view_name as v
   SET target_column_name = value
 WHERE t.where_column_name = v.where_column_name
   and v.search_column_name = search_value;

SQL92 標準的にどうなのかは知りません。だれか教えてください。:-)

そんなことより、今日 MySQL のマニュアル読んでてびっくりしたのは、UPDATE 文にORDER BY 句が使えること。指定した順で更新されていく。

なんの意味があるんだろう?

やっぱり MySQL は変態だなぁ、と思った(誉めてます)。

comment