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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

4回答

1202閲覧

sql select

coko1

総合スコア276

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2017/09/06 02:13

ある条件のSELECT結果が0件だったら別の条件でSELECTを行いたいのですが、1つのクエリーで実現はできるでしょうか?
それともクエリーを2つに分けるのが正解でしょうか?

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

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

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

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

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

guest

回答4

0

ちょっと無理矢理感がありますがwithで行いました。
これが一文と言えるかは??

sql

1create temp table hoge (id int, col text); 2insert into hoge values(1,'hoge1'),(2,'hoge2'),(3,'hoge3'),(4,'hoge4'); 3 4WITH test1 AS ( 5 SELECT * from hoge where id=0 6 ), test2 AS ( 7 SELECT * from hoge where id=3 8 ) 9SELECT * from test1 10union all 11SELECT * from test2 where (select count(*) from test1) = 0;

それともクエリーを2つに分けるのが正解でしょうか?

正解だと思います、PGで表現された方が分り易いのではないでしょうか。

投稿2017/09/06 03:12

A.Ichi

総合スコア4070

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

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

0

あんまりお勧めできる方法ではありませんが、

SQL

1SELECT2WHERE ( 3SELECT COUNT(*) ある条件)= 0 AND 40件時のSELECT条件 5) OR ( 6SELECT COUNT(*) ある条件) > 0 AND 71件以上時のSELECT条件 8)

みたいなことをすればいけるかと。
ただ、そんなことをするより分けたほうが可読性はよくなると思いますが。

投稿2017/09/06 03:19

tacsheaven

総合スコア13703

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

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

0

各々の条件で一度に取り出し、優劣を付けるなどで、一度の問合せでできたりします。
過去の経験では、問い合わせを一つに纏めきれなかったものはありません。

ただ、性能や可読性などもあり、出来るけど分けるという場合もありますので、状況次第といったところです。

投稿2017/09/06 03:03

sazi

総合スコア25195

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

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

0

ベストアンサー

PostgreSQL には詳しくないので正しい答えかどうかわかりませんが、SQL 自体は集合演算の問合せ言語であり、逐次処理には対応していません。ので、標準の機能を使って 1 回のクエリーで解決することはできないと思います。

どうしても PostgreSQL 側で逐次処理・条件分岐を処理させたいなら、PL/pgSQL とかストアドプロシージャとか、そういうのを使うとよいのではないでしょうか。

投稿2017/09/06 02:26

unau

総合スコア2468

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問