我有一个 .sql 脚本:
DO $$
DECLARE
user_list integer[] = (select user_id from user where state = 'ACTIVE');
BEGIN
CREATE CREATE MATERIALIZED VIEW accounts_with_active_users AS
select * from accounts where user_account IN (user_list);
...
CREATE CREATE MATERIALIZED VIEW accounts_without_active_users AS
select * from accounts where user_account NOT IN (user_list);
...
END $$;
然而,我总是遇到这个错误:
ERROR: cannot cast type integer to integer[]
我之前尝试使用相同的单词 array
,结果也是一样的:
user_list integer[] = array(...)
WHERE [NOT] EXISTS (SELECT 1 FROM users WHERE users.user_id = accounts.user_account AND user.state = 'ACTIVE')
来获得更好的计划。尝试一下,看看哪个更好。 - Laurenz Albe