假设表有十亿行数据,是否有更好的方法来扩展此问题的解决方案。我有兴趣获取 2016 年提交请求的所有新用户。
请求(request_id、request_day、user_id、userprofile_id)
SELECT DISTINCT user_id
FROM requests
WHERE EXTRACT( year FROM request_day ) = 2016
AND user_id
NOT IN
( SELECT DISTINCT user_id
FROM requests
WHERE EXTRACT( YEAR FROM request_day ) <> 2016
);
最佳答案
我将使用以下查询来回答这个问题:
SELECT user_id
FROM requests
GROUP BY user_id
HAVING SUM(CASE WHEN YEAR(request_day) <> 2016 THEN 1 ELSE 0 END) = 0
这只会返回有 2016 年而非其他年份出现请求的用户。
关于mysql - 获取2016年提交请求的所有新用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40297723/