質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

2回答

1087閲覧

Oracle SQL 条件に当てはまった場合、後続処理を飛ばす

cherry_ayami

総合スコア0

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2021/06/10 18:42

前提・実現したいこと

現在、OracleのDBを利用しており、動的なSQL文を作成したいと考えています。

例えば最初に下記のようなSQLを実行したとします。

1.SELECT count(*) FROM sample_table

このカウントの数が、1以上だったらそこで終了。
0であった場合のみ、2番目のSQL文を実施するといったことが行いたいと思っています。

2.SELECT seq_no,name FROM main_table

このような動作を行いたい場合はどうやって実現するのが1番良いでしょうか?

if文とcase文を組み合わせてみたりしようとしたのですが、case文で分岐させるとSQL文の実行はできないようでエラーになってしまいます。

1つ目のSQLの結果次第で2つ目のSQLを実行するのか分岐させる場合はどのように分岐させるのが良いかアドバイスをいただきたく思います。

色々不慣れで情報が不足していたり、伝わっていなかったら申し訳ありません。

皆様のお力を借りれましたら幸いです。

よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

こういうことでしょうか?

sample_table の件数が 0件なら main_table から seq_no と name を取得する

SELECT seq_no,name FROM main_table where (SELECT count(*) FROM sample_table)=0

投稿2021/06/10 19:50

Yoshi88

総合スコア623

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

結果が0行で返ってくるのを許容するのであれば、単純に2.のクエリに1.をWHEREの条件に入れてあげればよいと思います。

sql

1select * from main_table 2where 3 (select count(*) from sample_table) = 0

sample_tableに1行でもデータが入ってる場合は結果が0行のmain_tableとして取得することになります。

投稿2021/06/10 19:21

hope_mucci

総合スコア4447

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問