选择满足初始条件的行,而每行的其他条件不是

时间:2014-10-19 15:09:54

标签: mysql

我目前有以下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列表(Trial = 1& EndDate< Now)但不管EndDate是否与非试用许可证相关联。

在上面的示例中,ID 3将是唯一返回的ID,因为ID 1已被ID 2取代。

我尝试过使用多个子查询,但它们似乎过大而且仍然不符合要求。

1 个答案:

答案 0 :(得分:1)

select acountid
from your_table
group by accountid
having sum(trail = 0) = 0
and sum(trail = 1 and enddate < now()) > 0