我有两个表--一个是包含某种类型条目的日志的history表,另一个(我们称之为flags),包含关于标志的列(用于某个帐户)。两个表都包含帐户ID。
我想要写一个查询,如果帐户ID在history表中没有那个月的条目,那么只能从history表中提取行(例如,在flag表中,在2019年4月2日输入了一个条目,而在history表中,该帐户在2019年4月1日已经记录了一个条目。其结果是,4月2日的条目不应该被取消)。
我现在有一个基本如下的查询:
SELECT *multiple column names*
FROM flags
WHERE NOT EXISTS (SELECT acc_id FROM history WHERE ...)这就是我被困的地方。对于子查询,我基本上希望获得两个表的日期匹配的匹配(相同的月份和年份),对于WHERE NOT EXISTS,将子查询中找到的flag中的结果排除在外(实际上,我只想要条目的日期不是来自同一个月的结果)。
最重要的栏目是:
我最初使用的是MONTH(),但它只提取日期的月份。我需要它来匹配月份和年份,因为历史表包含几年的数据。
任何帮助都将不胜感激!提前谢谢你!
发布于 2019-07-07 01:33:17
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,数据库中可能会有类似的函数,您可以将日期格式化为年月,并比较产生的字符串。
https://stackoverflow.com/questions/56918710
复制相似问题