mysql左联查询时,右表有多条关联左表同一记录的信息,只要有右表中有条件不符合,就不显示该所有左表记录 100

表1,用户表user表2,用户记录表from_idSELECT*from`user``u`LEFTJOIN`form_id``f`ONu.id=f.user_idWHER... 表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天)符合的都去除呢?
展开
 我来答
Jinli1771
2019-10-13 · TA获得超过375个赞
知道小有建树答主
回答量:612
采纳率:58%
帮助的人:124万
展开全部
SELECT * from `user` `u` LEFT JOIN `form_id` `f` ON u.id = f.user_id
WHERE (`f`.`addtime` >= 6天前的时间) AND (`f`.`addtime` <= 3天前的时间)
AND u.id IS NULL
ORDER BY `f`.`addtime` DESC LIMIT 20;
或者
SELECT * FROM `form_id` `f`
WHERE (`f`.`addtime` >= 6天前的时间) AND (`f`.`addtime` <= 3天前的时间) -- 前三天的记录
AND NOT EXISTS (SELECT 1 FROM user` `u` WHERE u.id = f.user_id) -- 没有在用户表里的人
ORDER BY `f`.`addtime`
追问
返回都是空的
追答
第一个换成f.id is null试下,原则上左连接一般是左表是大表然后关联小表取左表是空的记录查出来就是没在右表的数据,我这里测试不了你再试下
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式