[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 メーリングリストの案内