2017-10-24 7 views
-1

postgresqlクエリを実行しようとしていますが、構文エラーが発生しています。クエリは次のとおりです。構文idx()でのエラーpostgreSQL

c.execute("CREATE TABLE smaller_coverage " 
     "AS (SELECT donor_id, block_id, " 
     " sorted_ids[(:idx(sorted_ids, block_id) - 1)]" 
     "  AS smaller_ids " 
     " FROM plural_block INNER JOIN covered_blocks " 
     " USING (donor_id))") 

エラーは:idxです。 誰かがコードを修正し、説明することもできますか? ありがとう

+0

:idxはバインド変数でなければなりません。また、バインド変数は、このように見える関数またはファンクション名にはできません。あなたは何を達成しようとしていますか、なぜこの関数名は変わりますか? –

+0

申し訳ありませんが、私はpostgresqlについて多くのアイデアを持っていません。 ':'が削除された場合、クエリは正常に実行されているようです。これが最終的な出力に何らかの問題を引き起こすでしょうか? –

+0

:postgresqlではphpの "$"と似ています。これは変数のマーカーです。それを削除するということは、 "idx"という関数を実行していることを意味します。もしそのような関数が存在し、それを実行したいならば:を削除してください。 - 編集:後世のために、私は以下のことについての説明があることを知っています:大過剰な単純化です。 –

答えて

0

:postgresqlはphpの "$"とちょっと同じです。変数のマーカーです。それを削除するということは、 "idx"という関数を実行していることを意味します。もしそのような関数が存在し、それを実行したいならば:を削除してください。 - 編集:後世のために、私は以下のことについての説明が分かりました。

つまり、idxの代わりに、呼び出す関数名を使用します。

関連する問題