两个子查询返回正确的数据但重复

时间:2019-01-08 18:33:11

标签: postgresql time subquery common-table-expression

我正在尝试在2018年6月之前和12月1日之后抢购产品。我想一个简单的方法是通过两个子查询,然后在外部查询中将它们彼此相邻地调用。运行此命令时,我会为其中一个子查询获取正确的数据,而另一个子查询只是针对另一个查询的每个不同结果重复相同的idcreated_at

with x as (select id, created_at
    from products p
    where created_at < '2018-06-01'
    and approved = 't'),

y as (select id, created_at 
    from products p
    where created_at > '2018-12-01'
    and approved = 't')

select * from x,y
limit 100;
Results look like :
id   |   created_at  | id2    |   created_at2
1       2012-12-05     5         2018-12-20 
2       2012-12-06     5         2018-12-20
3       1993-05-23     5         2018-12-20
4       2005-03-10     5         2018-12-20
...
Expected results:
id   |   created_at  | id2    |   created_at2
1       2012-12-05     5         2018-12-22 
2       2012-12-06     6         2018-12-31
3       1993-05-23     7         2018-12-27
4       2005-03-10     8         2018-12-06

1 个答案:

答案 0 :(得分:0)

也许我对要求不清楚,但是如果您想“抢购”在2018年6月之前或12月1日之后创建的产品,则可以在一个带有OR条件的查询中进行操作:

select id, created_at
    from products p
    where (created_at < '2018-06-01' OR created_at > '2018-12-01')
    and approved = 't'