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

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

ただいまの
回答率

90.52%

  • PostgreSQL

    1060questions

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

PostgreSQLでのIF文について

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 1,406

nasho

score 1

PostgreSQLではIF文を使えるのでしょうか?

SQLServerでは以下のようにIF文を使用していたのですが、PostgreSQLでも同じようなことが出来るのでしょうか?

IF NOT EXISTS (SELECT * FROM [TABLE] WHERE [COLUMN_1]=1)
BEGIN
    INSERT INTO [TABLE] ([COLUMN_1], [COLUMN_2]) VALUES (1, '')
END


よろしくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

無名ブロックを使用すれば、ストアドと同等の制御文(ループ等)の記述が可能です。

DO $$ BEGIN
    IF NOT EXISTS (SELECT * FROM [TABLE] WHERE [COLUMN_1]=1) then
      INSERT INTO [TABLE] ([COLUMN_1], [COLUMN_2]) VALUES (1, '');
    END IF;
END$$;

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/14 12:21

    回答ありがとうございます。
    提示していただいた方法で、期待通りのことが出来ました。

    キャンセル

0

ifは書けないのでWHEREで代替してみました。

INSERT INTO [TABLE] ([COLUMN_1], [COLUMN_2])
SELECT 1, ''
WHERE NOT EXISTS (SELECT * FROM [TABLE] WHERE [COLUMN_1]=1);

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    postgresqlのSELECT文で固定値を足したい

    PostgreSQL初心者です。 テーブル内が下記のように続いている時、 (1,'A') (2,'B') (3,'C') ・ ・ 出力の結果を以下のようにしたいで

  • 解決済

    psql 外部キー制約されたデータを自動で消す方法。

    外部キー制約されたデータを自動で消す方法の書き方を教えてください‥! このように記載すると DELETE FROM "user" WHERE user_id = 4;

  • 解決済

    bigint 文字列変換 0埋め

    SELECT lpad(<bigint型数値>, 10, '0') 上記のようにbigint型の数字を文字列に変えて0埋めを行いたいのですが、どのようにしたらよいでしょうか?

  • 解決済

    where句にcase文

    あるテーブルから男女どちらか、または両方のデータを取得するようなSQLを作成したいのですがうまくいきません。お力を貸していただけたらと思います。 現在作っているSQLは以下の

  • 解決済

    カラムに入っている数種類の値を最大値を条件に抽出し連結したい

    現在postgreSQLにてテーブルAのカラムAに入っている値をarray_agg関数で連結したものを、カラムcの値でorder byしテーブルBのカラムAへupdateで挿入する

  • 解決済

    insert into でインサートできない

    df内のweekの後ろの1文字を除去して、dfのmonthにinsertしたいのですが、 エラーは出ないのにデータを確認するとインサートされていません。 --行追加 alter

  • 解決済

    sql select

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

  • 解決済

    別テーブルの情報をidがあるものだけ追加したい

    前提・実現したいこと テーブルAにテーブルBにある項目(Pとする)をテーブルAのidのあるものだけ追加したいです。 図で表すと テーブルA |id|列2| |1|あ| |2|い|

同じタグがついた質問を見る

  • PostgreSQL

    1060questions

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