我目前有以下 SQL 表:
ID (PK) | StartDate | EndDate | Trial | AccountID
-------------------------------------------------------------------------
1 | 2014/08/01 00:00:00 | 2014/09/01 00:00:00 | 1 | 1
2 | 2014/09/15 00:00:00 | 2014/10/15 00:00:00 | 0 | 1
3 | 2014/09/16 00:00:00 | 2014/10/16 00:00:00 | 1 | 2
我需要实现的是试用许可证已过期的 AccountID 列表(试用 = 1 且结束日期<现在),但无论结束日期如何,都没有关联的非试用许可证。
在上面的示例中,ID 3 将是唯一返回的 ID,因为 ID 1 已被 ID 2 取代。
我尝试使用许多子查询,但它们似乎变得过大,但仍然不满足要求。
最佳答案
select acountid
from your_table
group by accountid
having sum(trail = 0) = 0
and sum(trail = 1 and enddate < now()) > 0
关于mysql - 选择满足初始条件而其他条件不满足每行的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26451904/