记录一段mysql代码
1 2 3 4 5 6 7 8 9 10 11 12 13 | SELECT f . * , tmp.userid, tmp.cishu FROM fx_user f, ( SELECT a.id, b.userid AS userid, COUNT ( * ) AS cishu FROM `fx_user` AS a LEFT JOIN `fx_plan` AS b ON a.id = b.userid AND b.fxtype =0 GROUP BY a.id )tmp WHERE f.id = tmp.id AND priority =1 ORDER BY id ASC LIMIT 0 , 50 |
通过括号内左连接查询,得到一个结果集,这个结果集可以看作是一张虚拟表tmp:
1 2 3 4 5 6 7 8 | ( SELECT a.id, b.userid AS userid, COUNT ( * ) AS cishu FROM `fx_user` AS a LEFT JOIN `fx_plan` AS b ON a.id = b.userid AND b.fxtype =0 GROUP BY a.id )tmp |
得到包含左表user表的全部行数据(tmp),类似于
1------a
2------b
3------c
4------NULL
即,左表全部列出,右边不存在的信息用null填空。
然后再用 select * from 表1,表2 where 表1.字段 = 表2.字段 这种多表查询方式取得自己想要的结果。
———————————————————分割线—————————————————————————
今天再次看上次的查询,发现用这种临时表的方式,搞得太复杂了,自己对查询还是掌握太少了。百度一阵子,又找到以下更加简单的方法:
1、次数为0,是一种情况
*****次数为0时,类型不选则用
无论15分钟还是随机都没有分享的
1 | SELECT * from `fx_user` where id NOT IN ( SELECT userid FROM `fx_plan` where fxtype=2 or fxtype=1 group by userid) |
次数为0,类型选择15分钟,则用
15分钟没有分享的
1 | SELECT * from `fx_user` where id NOT IN ( SELECT userid FROM `fx_plan` where fxtype=1 group by userid) |
次数为0,类型选择随机,则用
随机没有分享的
1 | SELECT * from `fx_user` where id NOT IN ( SELECT userid FROM `fx_plan` where fxtype=2 group by userid) |
姓名和级别后面追加查询条件 and 即可
==================================
2、次数不为0,是一种情况
*****如果选择 随机 ,且次数为2,这个比较麻烦点
1 | select * from `fx_user` f ,( SELECT userid, count (*) as cishu FROM `fx_plan` where fxtype=2 group by userid) tmp where f.id=tmp.userid and tmp.cishu=2 |
*****如果选择 随机 ,且次数为1,
1 | select * from `fx_user` f ,( SELECT userid, count (*) as cishu FROM `fx_plan` where fxtype=2 group by userid) tmp where f.id=tmp.userid and tmp.cishu=1 |
姓名和级别后面追加查询条件 and 即可
==================================
发现用 having 取代 where 后,就可以用 count 作为查询条件了 (HAVING要放到最后)
1 | SELECT * from `fx_user` where id IN ( SELECT userid FROM `fx_plan` where fxtype=2 group by userid HAVING count (userid)=2 ) |
这样一来,1,2两种情况就可以合二为一了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!