2008/08/04 (月)

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

2005/08/20 (土)

2005-08-20:PostgreSQL for Windows

長いので別ページに。
PostgreSQL for Windows

comment

2004/01/09 (金)

2004-01-09:perl みんな忘れてる

オフィスで perl で PostgreSQL をいじる話題が出て、けっこうみんな perl を忘れている事件。
そして、やっぱ Ruby でしょ、とか PHP5 ってどうなのよ、といった話題になる。ありがちすぎ。

comment

2003/07/26 (土)

2003-07-26:TomcatとPostgreSQL

とむ猫と遊ぼう、ということで、てもとのマシンに J2SE を入れて、tomcat41 を入れて、mod_jk2 を入れる。
PostgreSQL の JDBC ドライバが servlet から使えない。。。としばらく悩む。
どうも Tomcat の起動スクリプトから呼ばれる setclasspath.sh というのがCLASSPATH をぶっこわしてくれていたらしい。ここを修正したらシアワセになれた。

comment