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