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

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

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

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

Q&A

解決済

2回答

1644閲覧

PostgreSQLで、WITHとINSERTを組み合わせる

acre_maker

総合スコア145

PostgreSQL

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

0グッド

0クリップ

投稿2016/07/08 08:10

PostgreSQLでWITHとINSERTを組み合わせることは可能なのでしょうか?

https://www.postgresql.jp/document/9.3/html/queries-with.html

このページを確認すると

WITHの中で削除したテーブルを他のテーブルにINSERTすることは可能なようですが、

私は単純に検索をかけてその結果をテーブルに保存するということがしたいです。

WITH subset AS (SELECT * FROM foo WHERE id < 10) INSERT INTO baz SELECT * FROM subset WHERE id < 5;

実際にやろうとしている検索条件はもう少し複雑です。

WITH内の検索でデータベース中のレコードを大幅に減らして

WITHの外の検索でさらに正確に絞り込みたいと思っています。

このように入力しても

syntax error at or near "insert"

と表示されてしまいます。

ここには載せていませんが、

WITHを使わないで私が作ったSQL文はお粗末なようで

1段階目の絞り込みを無視して2段階目の絞り込みをしてしまうようになっています。

WITHを使わない別の方法でも可能でしたらWITHにこだわるつもりはありません。

お忙しいとは思いますがよろしくお願い致します。

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

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

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

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

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

guest

回答2

0

別のパソコンにバージョン9.4.4のPostgreSQLがあったので

そちらでテストしたところうまくInsertできました。

うまく動かなかったほうはバージョン8.4.20だったので

おそらくバージョンの違いのせいかなと思います。

ちょっと大変ですがバージョンアップはおそらくできないので

WITHを使わない副問い合わせをもう一度考えてみます。

ご協力ありがとうございました。

投稿2016/07/08 23:54

編集2016/07/08 23:56
acre_maker

総合スコア145

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

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

0

ベストアンサー

同じようなデータを入れてpgadmin3のSQLで検証してみたら動いたので、上記の組み合わせは可能です。なので、エラーが発生しているのは何か記述に変な所があったりするのではないでしょうか?

投稿2016/07/08 10:17

FKM

総合スコア3608

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

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

acre_maker

2016/07/08 23:39

ご確認ありがとうございます。 うまくいったという実例をいただけて大変助かりました。 私も変な所があるのかなと思って別の簡単なテーブルでやってみたのですが、 やはり同じエラーがでます。 WITH subset AS (SELECT * FROM foo WHERE id < 10) SELECT * FROM subset WHERE id < 5; だと上手くいくのですが、INSERT INTOにするとうまく動きません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問