MySQL选择范围内的值,该值不在另一个范围内
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL选择范围内的值,该值不在另一个范围内相关的知识,希望对你有一定的参考价值。
我们有一个表格,我们记录每个客户的请求,每个请求得到一个created_at
和customer_email
列。
mysql> select * from requests;
+---------------------+-----------------------+
| created_at | customer_email |
+---------------------+-----------------------+
| 2016-08-08 14:05:50 | user1@example.com |
| 2016-08-08 14:05:51 | user2@example.com |
| 2017-08-15 14:41:40 | user3@example.com |
| 2017-08-15 15:17:25 | user2@example.com |
| 2018-08-15 15:30:41 | user1@example.com |
+---------------------+-----------------------+
我想在08/2018获得customer email
的created_at
记录,但在此之前没有提出请求。换句话说,找出在08/2018创建请求的客户是新客户。
这是我正在尝试的查询,它返回0
SELECT DISTINCT
customer_email
FROM
requests
WHERE
created_at > '2018-08-01'
AND customer_email NOT IN (SELECT DISTINCT
customer_email
FROM
requests
WHERE
created_at < '2018-08-01')
任何帮助将非常感激!
答案
尝试GROUP BY
与HAVING
条款。
使用MIN函数,我们可以找到first_created_at
的customer_email
,然后利用HAVING子句,我们将结果集限制在08/18之后的first_created_at
。
SELECT customer_email, DATE(MIN(created_at)) AS first_created_at
FROM requests
GROUP BY customer_email
HAVING first_created_at >= DATE('2018-08-01')
以上是关于MySQL选择范围内的值,该值不在另一个范围内的主要内容,如果未能解决你的问题,请参考以下文章