mysql select value in range,其中该值不在另一个范围内

c8ib6hqw  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(425)

我们有一个表,记录每个客户的请求,每个请求都是一个 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     |
+---------------------+-----------------------+

我在找你的唱片 customer email 那是 created_at 但在此之前没有创建请求。换句话说,找出在2018年8月创建请求的客户是哪些新客户。
这是我正在尝试的查询,它返回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')

任何帮助都将不胜感激!

krcsximq

krcsximq1#

尝试 GROUP BYHAVING 条款。
利用最小函数,我们可以找出 first_created_at 为了一个 customer_email ,然后利用having子句,将结果集限制为 first_created_at 08/18之后。

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')

相关问题