
Loop文で検索条件を変えるSQL(plpgsql)を作成しようとしております。
具体的にはあるテーブルから、
select a,b from sample…(1)
でデータを取得して、このa,bを用いて、
select * from sample2 where sarch = a and sarch2 = b…(2)
上記SQLを(1)の件数文LOOPさせる。
わからないことは、
・(1)で取得した、aとbを(2)にどのように入れていくか。
・(1)の件数をどのように取得してLOOPさせればよいか
以上2点です。
どなたかご教授いただけたらと思います。
参考URLも是非教えていただけたらと思います。
よろしくお願いいたします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#1です。
提示したSQLに誤字がありましたね。失礼しました。(1)行値式を使用する
→where句のスペル誤りを訂正
select * from sample2
where (sarch,sarch2) in(select a,b from sample)
;
(2)existsを使用する
→where句のスペル誤りを訂正。表の別名での参照に統一
select * from sample2 as s2
where exists
(select 1
from sample
where a=s2.sarch and b=s2.sarch2)
;
No.1
- 回答日時:
PostgreSQLも、バージョンにより機能が大きく違います。
使っているバージョン(少なくとも、8.0、8.4というように)を、明記するようにしてください。まず、検索対象を最後まで検索したことを知るには、found という変数を参照する方法があります。
http://www.postgresql.jp/document/pg830doc/html/ …
例えば、次のような使い方をします。
if not found then
参照する行がなくなった場合の処理 ;
else
参照する行がある場合の処理 ;
end if;
sample表から検索した結果を、sample2表の検索に利用するだけなら、簡単な方法としてはサブクエリを使えばいいでしょう。
サブクエリの書き方としてはいろいろな方法がありますが、例えば行値式(あるいは行値識別子とも呼ばれる)を使う方法が簡単です。
(1)行値式を使用する
select * from sample2
wgere (sarch,sarch2) in(select a,b from sample)
(2)existsを使用する
select * from sample2 as s2
wgere exists
(select 1
from sample
where a=s2.sarch and b=sarch2)
なお、行値式は標準SQLにも入っているのですが、いくつかのRDBMSでは実装していないものや比較的、最近のバージョンで実装していたりするので注意してください。
>PostgreSQLも、バージョンにより機能が大きく違います。使っているバージョン(少なくとも、8.0、8.4というように)を、明記するようにしてください。
質問の際には上記を注意します。ご指摘ありがとうございます。
(1)・(2)の方法、両方試して見たいと思います。
ご教授ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQL Date型の列から年月だけを...
-
年月でdistinctしたい(PostgreSQL)
-
抽出結果を分割して取得
-
select文の書き方「半角カナ+...
-
レコード件数のちょうど半分をe...
-
フィルターかけた後、重複を除...
-
差し込み後、元データを変更し...
-
エクセルで最後の文字だけ置き...
-
for whichの使い方
-
カーソル0件の時にエラーを発生...
-
SQLで列名を変数にできないでし...
-
INSERT文でフィールドの1つだ...
-
SELECT 文 GROUP での1件目を...
-
外部参照してるキーを主キーに...
-
変数名「cur」について
-
'internal' のシステム メモリ...
-
エラー 1068 (42000): 複数の主...
-
Outlook 送受信エラー
-
PL/SQLの変数について
-
特定の文字列で列を区切るには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL Date型の列から年月だけを...
-
select文の書き方「半角カナ+...
-
Select結果をSelect
-
抽出結果を分割して取得
-
postgreSQLで更新後のデータを...
-
レコード件数のちょうど半分をe...
-
年月でdistinctしたい(PostgreSQL)
-
副問い合わせの使い方
-
検索後のレコード選択について
-
selectの速度について
-
UPDATE文の中でJOIN
-
2回目のselect文
-
Loop文による検索条件の変更
-
SQL文の中に引用符を入れたい
-
条件付ソートについて
-
取得行数の指定
-
ポストグレスでfrom句の中にsel...
-
フィルターかけた後、重複を除...
-
差し込み後、元データを変更し...
-
SQLで特定の項目の重複のみを排...
おすすめ情報