VARCHAR
のテーブルをPRIMARY_KEY
としているので、私のIDはランダムに生成され、WUoN5VemT
またはMQvOQidTi
のようになります。私はちょうど入力として配列を期待し、配列に含まれるすべての要素を返す関数を記述します。 where句の機能入力としてのPostgres配列
CREATE OR REPLACE FUNCTION public."getInfo" (
"myIDs" varchar []
)
RETURNS varchar AS
$body$
BEGIN
SELECT * FROM "myTable" WHERE "id" IN($1) ORDER BY "idDate" DESC;
-- RETURN etc....
END;
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER
COST 100;
しかし、問題は(100も可能である)の配列は、50個の以上のエントリを含めることができますので、私は早く、この操作を行う必要があります。私は、次の半のコードはずっといい、より良い、それを表示すると思います可能。次の問題は、上のコードは動作しません。私は多くの場合、
IN
キーワードを使って複数の値の解を見つけましたが、配列と
IN
という節を組み合わせる方法はありますか?
これを実現する機会はありますか?
おかげで、私は「id_date DESC BYオーデル」を追加することにより、次のエラーを取得する: クエリに失敗しました:エラー:列「id_dateは、」GROUP BY句に表示される必要がありますまたは集約関数LINE 1で使用します: ... SELECT(SELECT COUNT(*)FROM "myTable" JOIN(SELECTネーム不一致($ 1))x(id) USING(id)ORDER BY "myTable"。 "id_date" DESC)CONTEXT:PL/pgSQL関数 "get_info"です。 テストの目的で、私はSELECT文の結果を数えます。これは後で置き換えられます... – Nrgyzer
@Nrgyzer:機能を変更しました。あなたは 'count(*)'と 'ORDER BY id_date'を同時に使うことはできません。実際に達成したいことで質問を更新してください。 –
ああ、大丈夫です...私はCOUNT(*)を削除しました。 – Nrgyzer