我有以下postgresql查询,它从名为statement_bank的表中选择几个字段:
SELECT statement_id, statement_value FROM statement_bank WHERE category_id=6 AND level=7
我有另一个名为statement_records的表,该表的字段是:
date | user_id | statement_id
一旦语句用于特定的user_id,statement_id就会记录在statement_records表中。对于不同的用户,可能会记录几次。
我希望运行第一个查询,以便它只返回statement_bank表中的statement_id,如果它存在于特定日期之间的statement_records表中,例如在01-01-2013和01-01-2014之间
关于如何实现这一目标的任何建议?
由于
答案 0 :(得分:1)
我想你只想要一个exists子句。根据您提供的信息,它看起来像:
SELECT statement_id, statement_value
FROM statement_bank sr
WHERE category_id=6 AND level=7 and
exists (select 1
from statement_record sr
where sr.user_id = sb.user_id and
sr.statement_id = sb.statement_id and
sr.date between '2013-01-01' and '2013-12-31'
);
注意:我假设您在2014-01-01期间并不真正想要比赛,但仅限于2013年底。