![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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で質問しましょう!
似たような質問が見つかりました
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
抽出結果を分割して取得
-
SQL Date型の列から年月だけを...
-
PL/pgSQLの返り値の取得方法に...
-
select文の書き方「半角カナ+...
-
Select結果をSelect
-
UPDATE文の中でJOIN
-
ポストグレスでfrom句の中にsel...
-
Loop文による検索条件の変更
-
left join が3つ以上のとき
-
取得行数の指定
-
1、Rstudioで回帰直線を求める...
-
差し込み後、元データを変更し...
-
エクセルで最後の文字だけ置き...
-
外部参照してるキーを主キーに...
-
フィルターかけた後、重複を除...
-
INSERT文でフィールドの1つだ...
-
SELECT 文 GROUP での1件目を...
-
EXISTSを使ったDELETE文
-
SQLで特定の項目の重複のみを排...
-
Exel VBA 別ブックから該当デ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQL Date型の列から年月だけを...
-
select文の書き方「半角カナ+...
-
抽出結果を分割して取得
-
Select結果をSelect
-
ポストグレスでfrom句の中にsel...
-
年月でdistinctしたい(PostgreSQL)
-
postgreSQLで更新後のデータを...
-
条件付ソートについて
-
レコード件数のちょうど半分をe...
-
PL/pgSQLの返り値の取得方法に...
-
round関数について
-
取得行数の指定
-
重複する値を無視するには?
-
状態によって、取得したいデー...
-
SQL文の日本語の箇所で文字化け
-
sqlで全て出ないことがある
-
select文の結果を指定した条件...
-
複数レコードのテーブルである...
-
2回目のselect文
-
selectの速度について
おすすめ情報