Postgresql 将不在子查询中的查询作为具有枚举值的条件
我有一个名为Postgresql 将不在子查询中的查询作为具有枚举值的条件,postgresql,Postgresql,我有一个名为users 用户标识状态转换 1. accept v1 1. refused v1 2. accept v1 2. refused v2 在表用户中没有主键,并且状态和转换 我必须获得一个不同的用户id,其中transition!='v2' 我想要的结果 user\u id 1 select T.user_id from users T wher
users
用户标识
状态
转换
1. accept v1
1. refused v1
2. accept v1
2. refused v2
在表用户中没有主键,并且状态和转换
我必须获得一个不同的用户id,其中transition!='v2'
我想要的结果
user\u id
1
select T.user_id from users T
where T.user_id not
in
(select 1 from users where transition='v2' and users.ad_id=T.user_id
group by user_id) limit 10;
由于user_id=2
具有transition=v2
我进行了此查询,但不起作用,或者至少给了我重复的user\u id
1
select T.user_id from users T
where T.user_id not
in
(select 1 from users where transition='v2' and users.ad_id=T.user_id
group by user_id) limit 10;
您的查询必须如下所示:
select distinct user_id from users where transition != 'v2';
为了限制结果,只需在查询末尾添加限制10
使用purpose exclude用户,该用户在具有不同转换版本的表中出现两次-请尝试以下操作:
select distinct user_id from users where user_id not in (
select user_id from users where transition = 'v2'
);
我已经aleardy做了这个查询,但是没有为我想要的结果工作,因为您的查询将返回我的user_id=2
,我没有返回,因为我有transition=v2
我用结果更新了问题,希望更清楚谢谢您的合作感谢@Vladimir Kovpak它正在工作,但是运行时查询很慢,因为有其他方法处理大量数据吗优化此查询,否则这是我的唯一情况???@dev_medo有可能加快速度:1)重写查询以使用联接(将表用户与v1联接,将表用户与v2联接,并将用户与v2排除在外-但这是一个相当复杂的查询)2)更改表并添加索引。使用双联接(相同表的副本)我们将在可扩展性方面有所收获?