麻烦使用子查询中的PostgreSQL数组作为ANY表达式

时间:2015-02-16 05:24:02

标签: arrays postgresql subquery

我正在尝试在表中搜索数组中包含的值。例如,此查询使用无子查询按预期工作:

SELECT * 
FROM twitter_users 
WHERE twitter_id = ANY('{278929455,234874457,441723533,126840137}'::varchar[]);

但是,当在任何子查询中使用子查询时,它会失败:

SELECT * 
FROM twitter_users 
WHERE twitter_id = ANY(
  SELECT follower_ids
  FROM twitter_followers_logs WHERE ID =
    (
      SELECT MAX(id) MaxId
      FROM twitter_followers_logs
      WHERE twitter_user_id = 2992
    )
);

ERROR:  operator does not exist: character varying = character varying[]
LINE 3: WHERE twitter_id = ANY(
                         ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

表格定义如下:

CREATE TABLE twitter_users (
    id integer NOT NULL,
    twitter_id character varying,
    screen_name character varying
);

CREATE TABLE twitter_followers_logs (
    id integer NOT NULL,
    twitter_user_id integer,
    follower_ids character varying[] DEFAULT '{}'::character varying[],
    created_at timestamp without time zone NOT NULL,
    updated_at timestamp without time zone NOT NULL
);

如何在状态下获取子查询以正确运行ANY表达式?

0 个答案:

没有答案