SQL-过滤每个查询结果的方式不同

时间:2017-01-28 22:55:06

标签: mysql sql

我有一个让我发疯的问题。似乎答案应该是可能的(甚至是显而易见的),但我已经被困在这一点上。

这是上下文。我试图找出我的哪些用户在他们的产品许可证到期的最后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和电子邮件,因为每个客户的每个许可证结束日期都不同?

我知道我可以在电子表格中完成,但这个谜题让我发疯。提前感谢您的专业知识!!

2 个答案:

答案 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
相关问题