[pgsql-jp: 36815] Re: WHEREにSELECTふたつ
根岸 智幸
tomoyu-n @ tokyo-cafe.com
2006年 3月 3日 (金) 16:55:25 JST
根岸です。
すみません、ちょっと間違えました。
正確には、
test=# UPDATE t1 SET f3=10 FROM t2 WHERE t1.f1=t2.f1 AND t1.f2=t2.f2
AND t2.f5='a02';
です。
On 2006/03/03, at 16:48, 根岸 智幸 wrote:
>
> 根岸と申します。
>
> 以下ではいかがでしょう?
>
> test=# UPDATE t1 SET f3=10 FROM t1, t2 WHERE t1.f1=t2.f1 AND
> t1.f2=t2.f2 AND t2.f5='a02';
>
> UPDATE 1
> test=# select * from t1;
> f1 | f2 | f3
> ----+----+----
> 1 | 2 | 0
> 2 | 2 | 2
> 2 | 3 | 3
> 1 | 3 | 10
> (4 rows)
>
>
>
> On 2006/03/03, at 16:15, 河本陽一 wrote:
>
>> こうもとです。
>>
>> WHEREにふたつのSELECTの結果を渡そうとしています。
>>
>> 例)
>> # UPDATE t1 SET f3=10 FROM t1 WHERE f1=(SELECT f1 FROM t2 WHERE
>> f5='a02') AND f2=(SELECT f2 FROM t2 WHERE f5='a02');
>>
>> これでは効率が悪いと思うので、SELECTを1回で済ま
>> す方法はないでしょ
>> うか。
>>
>> 複数のフィールド(t1.f1,t1.f2)がプライマリキーとなって
>> いるテーブル
>> (t1)のフィールド(t1.f3)を、別のテーブル(t2)の条件
>> (t2.f5)を元に変更し
>> ようとしています。
>> 変更するときはt2、参照するときはt1を使用したい
>> と思います。
>> t2テーブルのフィールドに、t1.f3を参照する仮想
>> フィールドみたいなの
>> があるとよいと思っているのですが、そいうのはあるのでしょうか。
>>
>> #DBは、PostgreSQL 7.4.7 を使用しています。
>>
>>
>> ●データ構造
>> # \d t1
>> Table "public.t1"
>> Column | Type | Modifiers
>> --------+---------+-----------
>> f1 | integer | not null
>> f2 | integer | not null
>> f3 | integer |
>> Indexes:
>> "t1_pkey" primary key, btree (f1, f2)
>>
>> # \d t2
>> Table "public.t2"
>> Column | Type | Modifiers
>> --------+---------+-----------
>> f1 | integer | not null
>> f2 | integer | not null
>> f4 | integer | not null
>> f5 | text |
>> Indexes:
>> "t2_pkey" primary key, btree (f1, f2, f4)
>> "t2_f5_key" unique, btree (f5)
>> Foreign-key constraints:
>> "$1" FOREIGN KEY (f1, f2) REFERENCES t1(f1, f2)
>>
>>
>> ●データ
>> # SELECT * from t1;
>> f1 | f2 | f3
>> ----+----+----
>> 1 | 2 | 0
>> 1 | 3 | 1
>> 2 | 2 | 2
>> 2 | 3 | 3
>> (3 rows)
>>
>> # SELECT * from t2;
>> f1 | f2 | f4 | f5
>> ----+----+----+-----
>> 1 | 2 | 5 | a01
>> 1 | 3 | 6 | a02
>> 2 | 2 | 7 | a03
>> 2 | 3 | 8 | a04
>> (3 rows)
>>
>>
>> =====================================================================
>> =
>> 河本陽一(こうもとよういち)
>> mailto:komoto.yoichi @ kcc.co.jp
>>
>>
>>
>>
>
>
>
>
pgsql-jp メーリングリストの案内