[pgsql-jp: 33341] 重複しているサブクエリーの省略
Watanabe Takehiro
takk @ ntt-it.co.jp
2004年 6月 22日 (火) 17:31:47 JST
渡辺@ntt-itです
以下のSQL文の重複したサブクエリーをどうにかして一つにしてムダを省きたいのですが
やり方がわかりません。一つめのサブクエリーをテーブル全体にする方法も
あるのですが、データー量が100万行を超えているため現実的でないと考えています。
わかる方がいらっしゃいましたら、教えてください。
バージョンは PostgreSQL 7.3 on i686-pc-linux-gnu, compiled by GCC 2.96 です
select hoge3.d1,hoge3.d2,hoge3.name,hoge3,d3
from (select d1,d2,name,d3 from hoge where d2!=3) as hoge3
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
,(select name,max(d3) from
(select d1,d2,name,d3 from hoge where d2!=3) as hoge1
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
group by name) as hoge2
where hoge3.name=hoge2.name and
hoge3.d3=hoge2.d3;
select d1,d2,name,d3 from hoge where d2!=3 の結果
d1 d2 name d3
1 1 P1 10
1 2 P1 13
2 1 P1 12
2 2 P1 13
3 1 P2 13
3 2 P2 21
4 1 P2 23
4 2 P2 23
最終的に欲しい結果
d1 d2 name d3
1 2 P1 13
2 2 P1 13
4 1 P2 23
4 2 P2 23
よろしくお願いします。
pgsql-jp メーリングリストの案内