postgresql
概要 php(PDO) + postgresql の生SQLを実行時に Invalid parameter number: mixed named and positional parameters が発生。 原因、postgresqlのjsonbの演算子などではよく「?」を使うことがあるが、これと、phpのPDOのプリペアドステートメントの「?」(疑…
前提 [ { "foo": "foo内容1", "bar": "bar内容1", "kore": "kore1" }, { "foo": "foo内容2", "bar": "bar内容2" }, { "foo": "foo内容3", "bar": "bar内容3" } ] 上記のように、配列の中にさらにjsonが入っているタイプのデータがjsonbカラムに入っていた場…
概要 SELECT pg_get_serial_sequence('foo_bar_table', 'hoge_column'); foo_bar_table: 調べたいテーブルの名前 hoge_column: 調べたいテーブルのカラム名 だいたいは、カラム名はidとかが多いんじゃないでしょうか。 参考 Postgresqlのserial型カラムのシ…
概要 UNNESTとARRAYを組み合わせたものをテーブルとして扱う 例)01,02...という内容の配列を、testTblとして扱う SELECT 'test_data_' || testTbl::text as test_val FROM UNNEST(ARRAY['01', '02', '03', '04']) AS testTbl ; 結果 test_val -------------…
前提 postgresql バージョン9以上ぐらい? 結論 string_agg を使う 例)barテーブルのtype_idでgroup byしたときに、foo_nameカラムをカンマでひとまとめの文字列にする SELECT bar.type_id, string_agg(bar.foo_name, ‘, ‘) as foo_name_list FROM bar GROU…
例 DB::table('foo as f') ->leftJoin( DB::raw(" LATERAL ( SELECT MIN(goods.amount) as min_amount FROM goods WHERE foo.goods_id = goods_id ) as temp_min_amount "), DB::raw('1'), '=', DB::raw('1') ) ->select('f.*', 'temp_min_amount.min_amount…
方法 jsonb_setを使います。 例 fooテーブルのidが55 のデータに対し、 jsonb型カラムjsn_clmnの中身が {"a":{ "b": "bar"} だったものを {"a":{ "b": "nyaa"} に変える UPDATE foo SET jsn_clmn = jsonb_set(jsn_clmn, '{a,b}', '"nyaa"') WHERE id = 55 ; …
■Postgresqlのデータベースコピー 例) source_dbをcopy_dbにコピーしたい場合 CREATE DATABASE copy_db TEMPLATE source_db;
なるべく安全に削除したい SELECT * FROM pg_stat_activity where pid <> pg_backend_pid(); 上記で自分以外( pid <> pg_backend_pid() )の一覧を取得 backend_typeが「 client backend 」のもので、怪しいものを見つける。 該当のものを削除 SELECT pg_te…