
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を探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
postgreSQLで更新後のデータを...
-
Select結果をSelect
-
SQL Date型の列から年月だけを...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
差し込み後、元データを変更し...
-
Outlook 送受信エラー
-
外部参照してるキーを主キーに...
-
特定の文字列で列を区切るには?
-
count集計の結果が0の場合でも...
-
Access パラメータクエリをcsv...
-
SELECT 文 GROUP での1件目を...
-
updateでグループ化
-
1日に1人がこなせるプログラム...
-
for whichの使い方
-
SQLServerで文字列の末尾からあ...
-
顧客データベースを作る場合、...
-
エラー 1068 (42000): 複数の主...
-
SQLで特定の項目の重複のみを排...
-
INSERT文でフィールドの1つだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL Date型の列から年月だけを...
-
select文の書き方「半角カナ+...
-
Select結果をSelect
-
抽出結果を分割して取得
-
postgreSQLで更新後のデータを...
-
レコード件数のちょうど半分をe...
-
年月でdistinctしたい(PostgreSQL)
-
副問い合わせの使い方
-
検索後のレコード選択について
-
selectの速度について
-
UPDATE文の中でJOIN
-
2回目のselect文
-
Loop文による検索条件の変更
-
SQL文の中に引用符を入れたい
-
条件付ソートについて
-
取得行数の指定
-
ポストグレスでfrom句の中にsel...
-
フィルターかけた後、重複を除...
-
差し込み後、元データを変更し...
-
SQLで特定の項目の重複のみを排...
おすすめ情報