我有一个名为txns的表,它有属性txn_dt,user_id,txn_amt。我需要所有在2016年8月15日和2016年8月30日两个日期生成txns的用户。
有没有办法通过只访问一次来从表中获取所有用户?请与您分享您的意见。我知道INTERSECT和INNER JOIN会起作用,但我需要两次访问该表。我只能通过访问一次表来解决这个问题吗?非常感谢你。
答案 0 :(得分:2)
试试这个:
SELECT user_id
FROM txns
WHERE txn_dt IN ('2016-08-15'::date, '2016-08-30'::date)
GROUP BY user_id
HAVING COUNT(*) = 2
答案 1 :(得分:0)
试试这个:
select t.*
from txns t
where (select 1 from txns t1 where t1.user_id = t.user_id
and t1.txn_dt::date = '2016-08-15'::date limit 1) is not null
and (select 1 from txns t2 where t2.user_id = t.user_id
and t2.txn_dt::date = '2016-08-30'::date limit 1) is not null;