表1,用户表 user
表2,用户记录表 from_id
SELECT * from `user` `u` LEFT JOIN `form_id` `f` ON u.id = f.user_id
WHERE (`f`.`addtime` >= 6天前的时间) AND (`f`.`addtime` <= 3天前的时间)
ORDER BY `f`.`addtime` DESC LIMIT 20;
需求是筛选出前3天没有记录的用户,这个如何实现?上面这个我实现的筛选出(前6~3天)的最后一次时间的用户记录。
但是如果用户记录表有( 最近3天内)的记录,也是会把(前6~3天)的记录给查询出来。正常查询是会把符合条件的都查询示出来。
那或者说如何在条件2(最近3天内)符合的情况下,把条件1(前6~3天)符合的都去除呢?
表2,用户记录表 from_id
SELECT * from `user` `u` LEFT JOIN `form_id` `f` ON u.id = f.user_id
WHERE (`f`.`addtime` >= 6天前的时间) AND (`f`.`addtime` <= 3天前的时间)
ORDER BY `f`.`addtime` DESC LIMIT 20;
需求是筛选出前3天没有记录的用户,这个如何实现?上面这个我实现的筛选出(前6~3天)的最后一次时间的用户记录。
但是如果用户记录表有( 最近3天内)的记录,也是会把(前6~3天)的记录给查询出来。正常查询是会把符合条件的都查询示出来。
那或者说如何在条件2(最近3天内)符合的情况下,把条件1(前6~3天)符合的都去除呢?
解决方案 »
- 请教一个简单的MySQL插入语句
- MYSQL连接错误,求教!
- 能不能用一条select语句统计出几个数据(不同条件下得出来的数据)
- mysql中如何写一句与以下这个语句功能一样的sql
- 关于在PostgreSQL中使用函数的问题,急急急急急!!
- 各位有谁知道为什么 我将ACCESS里的数据导到MySQL里之后,出现乱码???
- mysql 截取问题
- mysql分区,如何使用时间戳来按月分区
- /etc/mysql/mysql.conf.d/mysqld.cnf和/etc/mysql/my.cnf的区别
- MYSQL服务无故自动不定时重启
- DBeaver连接mysql建表发生错误
- 关于mysql的按字符字段按月分区的问题
*
FROM
USER u
WHERE
u.id != ANY ( SELECT DISTINCT f.user_id FROM form_id f WHERE f.addtime >= DATE_SUB( CURDATE( ), INTERVAL 3 DAY ) )
麻烦大家帮我看一下哈整体需求就是获取6天内有记录,但是前3天没有记录的用户。下面是代码,简化了一些不必要的条件。SELECT
`u`.`id`, `f`.`addtime` AS `f_addtime`
FROM `user` `u` LEFT JOIN `form_id` `f` ON f.user_id = u.id and f.type = 'form_id' and
NOT EXISTS(SELECT 1 FROM form_id ff
WHERE ff.user_id = f.user_id AND ff.type = 'form_id' AND ff.addtime >= 3天前的时间戳)
WHERE `f`.`type`='form_id' AND `f`.`addtime` >= 6天前的时间戳 AND `f`.`addtime` <= 3天前的时间戳
ORDER BY `f`.`addtime` DESC LIMIT 20