我有一个让我发疯的问题。似乎答案应该是可能的(甚至是显而易见的),但我已经被困在这一点上。
这是上下文。我试图找出我的哪些用户在他们的产品许可证到期的最后90天内登录(现在他们不再是客户)。问题是,过滤器与许可证到期时相关,对于每个客户而言都是不同的。我最初尝试写这样的查询:
SELECT customer_id, email
FROM customers
WHERE last_login > ((SELECT license_end FROM customers)-7776000)
这是last_login和license_end的unix时间戳,因此7776000是90天的秒转换。由于我确定您已经确定,因此该子查询将返回多行并失败。哎呀。
因此,在这种情况下,是否有办法返回在许可证结束的最后30天内具有last_login时间戳的所有ID和电子邮件,因为每个客户的每个许可证结束日期都不同?
我知道我可以在电子表格中完成,但这个谜题让我发疯。提前感谢您的专业知识!!
答案 0 :(得分:0)
如果它们真的在同一个客户表中(似乎没有很好地规范化 - 但确定)
然后你只需要这个
SELECT customer_id, email
FROM customers
WHERE last_login > license_end-7776000
答案 1 :(得分:0)
您不需要子查询。您只是比较表中同一行的列。
SELECT customer_id, email
FROM customers
WHERE last_login > license_end - 7776000