Mysql SQL-以不同方式筛选每个查询结果

Mysql SQL-以不同方式筛选每个查询结果,mysql,sql,Mysql,Sql,我有一个问题快把我逼疯了。看起来答案应该是可能的,甚至是显而易见的,但我一直被难住了 这里是上下文。我试图找出哪些用户在产品许可证到期后的最后90天内登录,因为他们不再是客户。问题是,筛选器与许可证到期时间有关,这对于每个客户都是不同的。我最初尝试编写如下查询: SELECT customer_id, email FROM customers WHERE last_login > ((SELECT license_end FROM customers)-7776000) 这是最后一次登录

我有一个问题快把我逼疯了。看起来答案应该是可能的,甚至是显而易见的,但我一直被难住了

这里是上下文。我试图找出哪些用户在产品许可证到期后的最后90天内登录,因为他们不再是客户。问题是,筛选器与许可证到期时间有关,这对于每个客户都是不同的。我最初尝试编写如下查询:

SELECT customer_id, email
FROM customers
WHERE last_login > ((SELECT license_end FROM customers)-7776000)
这是最后一次登录和许可证结束的unix时间戳,因此7776000是90天的秒转换。我相信您已经确定了,这个子查询将返回多行并失败。哎呀

因此,在这种情况下,是否有办法返回所有在许可证结束后的最后30天内具有上次登录时间戳的ID和电子邮件,因为每个客户的每个许可证结束日期都不同


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

如果它们真的在同一个customers表中,而该表似乎没有很好的规范化-但是可以

那你只需要这个

SELECT customer_id, email
FROM customers
WHERE last_login > license_end-7776000

您不需要子查询。您只是比较表中同一行的列

SELECT customer_id, email
FROM customers
WHERE last_login > license_end - 7776000

我想我的困惑来自于这样一个事实:我试图从客户那里做一个SELECT unix端-7776000,但事实证明SELECT和from完全没有必要。该列实际上是一个时间戳,而不是在unix中。这确实奏效了。谢谢如果两列都是时间戳,使用DATE_SUB减去一个间隔。是的,它们实际上不在同一个表中,我只是想简化一下,以了解问题的实质。谢谢你的帮助@user7484388如果它们不在同一个表中,则需要加入这些表,然后可以执行table1.last_login>table2.license_end-7776000