我正在尝试在表中搜索数组中包含的值。例如,此查询使用无子查询按预期工作:
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表达式?