[pgsql-jp: 36817] Re: WHEREにSELECTふたつ

ISHIDA Akio iakio @ mono-space.net
2006年 3月 3日 (金) 18:42:31 JST


こんにちは。石田@苫小牧市です。

06/03/03 に 河本陽一<komoto.yoichi @ kcc.co.jp> さんは書きました:
> こうもとです。
>
> 根岸 智幸 さんの書いたこと:
> > test=# UPDATE t1 SET f3=10 FROM t2 WHERE t1.f1=t2.f1 AND t1.f2=t2.f2
> > AND t2.f5='a02';
>
>  上記で、思い通りの操作ができました。
> FROMがこのように使えるとは思いませんでした。
> 根岸さん、海北さん、ありがとうございました。
>
> #元メールにあるFROMは、もともとSELECTだったときのものが残っていまし
> た。
>
> ところで、ドキュメントによると、UPDATEのFROMはPostgreSQLの拡張と書
> いてありますが、ほかのDBの場合はどのように書けばよいのでしょうか。
>

よく読んでみたら、実はこれでいいんじゃないでしょうか。

UPDATE t1 SET f3 = 10
WHERE (f1, f2) = (SELECT f1, f2 FROM t2 WHERE f5='a02');

PostgreSQL でも他の RDBMS でも多分使えると思います。

http://www.postgresql.jp/document/current/html/sql-expressions.html#SQL-SYNTAX-ROW-CONSTRUCTORS
http://www.postgresql.jp/document/current/html/functions-comparisons.html



pgsql-jp メーリングリストの案内