我有两个表-一个,history
表,其中包含某种条目的日志,另一个(称为flags
),其中包含有关标志的列(对于某个帐户) )。这两个表都包含帐户ID。
我想编写一个查询,如果帐户ID在flag
表中(例如,在{{1中)没有该月的条目,则仅从history
表中提取行。 }}表中,于2019年4月2日输入了一个条目,在flag
表中,该帐户已于2019年4月1日记录了该条目。结果是,不应拉起4月2日的条目)
我现在有一个查询,基本上看起来像这样:
history
这就是我被困住的地方。对于子查询,我基本上希望获得两个表中的日期都匹配(相同的月份和年份)的匹配项,并与SELECT *multiple column names*
FROM flags
WHERE NOT EXISTS (SELECT acc_id FROM history WHERE ...)
一起排除WHERE NOT EXISTS
在子查询中找到的结果(本质上,我只想要条目的日期不是同一个月的结果)
最重要的列是:
我最初使用flag
,但这仅提取日期的月份。我需要用它来匹配月份和年份,因为历史记录表包含了几年的数据。
任何帮助将不胜感激!预先谢谢你!
答案 0 :(得分:0)
SELECT *multiple column names*
FROM flags
WHERE NOT EXISTS (
SELECT 1
FROM history
WHERE history.acc_id=flags.acc_id
AND date_trunc('month', history.date) =
date_trunc('month', flags.date)
)
date_trunc函数将适用于postgres,后者最初是标签之一。如果您不使用postgres,则数据库中可能会有类似的功能,您可以将日期格式化为仅Year-month,然后比较结果字符串。