3

タイプ integer[] の user_list 列を含む user_lists テーブルがあります。

私はこのクエリを実行しようとしていますが、これは十分に基本的なようです:

select id, alias from users where id = ANY(select user_list from user_lists where id = 2 limit 1);

次のエラーが発生します。

エラー: 演算子が存在しません: integer = integer[]
ヒント: 指定された名前と引数の型に一致する演算子はありません。明示的な型キャストを追加する必要がある場合があります。

私はpostgres 8.3.11を使用しています。アップグレードはオプションではありません。

私は何が欠けていますか?

4

2 に答える 2

5

代わりにこれを試してください:

select id, alias from users 
where (select user_list from user_lists where id = 2 limit 1) 
@> ARRAY[id];
于 2012-05-18T09:57:25.170 に答える
1

次のようなことを試すこともできます (8.3 で動作するはずですが、手元にありません):

SELECT u.id, u.alias 
FROM users u JOIN user_lists ul ON u.id = ANY(ul.user_list) 
WHERE ul.id = 2;

ああ、いくつかのバグ修正が欠けています (現在は 8.3.18 です)。8.3 は間もなくサポート終了になると予想されるため、アップグレードは来年かそこらでオプションにする必要があります。

于 2012-05-18T11:03:36.207 に答える