有没有人知道如何解决这个问题?
有一个包含客户的表和一个包含许可证的表。每个客户可以有多个许可证在不同的时间过期,有些许可证已经过期,有些许可证还没有过期。如果要选择至少具有一个有效许可证的所有客户,请执行以下操作:
SELECT * FROM License
LEFT JOIN Customer USING (customer_id)
GROUP BY Customer.customer_id
HAVING License.expiry > NOW()但是,如何才能获得只有过期许可证的客户呢?如果我执行"HAVING License.expiry < NOW()“,它会找到许可证过期的客户,但不会排除同时拥有有效许可证的客户。我需要选择只有许可证过期的客户。
“没有”可以解决问题,但没有这样的事情...
任何帮助都将不胜感激。
发布于 2013-02-07 20:20:40
尝试这个查询-
SELECT * FROM License
LEFT JOIN Customer USING (customer_id)
GROUP BY
Customer.customer_id
HAVING
COUNT(*) > 0 AND COUNT(*) = COUNT(IF(License.expiry > NOW(), 1, NULL))https://stackoverflow.com/questions/14750870
复制相似问题