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:

 (

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分钟还是随机都没有分享的

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分钟没有分享的

SELECT * from `fx_user` where id NOT IN (SELECT userid FROM `fx_plan` where fxtype=1 group by userid)

  

次数为0,类型选择随机,则用

随机没有分享的

SELECT * from `fx_user` where id NOT IN (SELECT userid FROM `fx_plan` where fxtype=2 group by userid)

  

姓名和级别后面追加查询条件 and 即可

==================================
2、次数不为0,是一种情况
*****如果选择 随机 ,且次数为2,这个比较麻烦点

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,

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要放到最后)

SELECT * from `fx_user` where id IN (SELECT userid FROM `fx_plan` where fxtype=2 group by userid HAVING count(userid)=2 )

  

这样一来,1,2两种情况就可以合二为一了。

记录一段mysql代码的更多相关文章

  1. 数据段、代码段、堆栈段、BSS段的区别

    进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用 途 不一而不尽相同,有些内存是事先静态分配和统一回收的 ...

  2. 记录这段时间java编程的小知识点

    记录这段时间java编程的小知识点 eclipse项目导入中文乱码 eclipse左侧目录结构变动 eclipse代码段左右移动 按tal键,是整体右移. 按shift  table 同时按,是整体左 ...

  3. C语言中内存分布及程序运行中(BSS段、数据段、代码段、堆栈)

      BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. 数据段 : ...

  4. bss段,代码段及数据段,堆栈段的区别

    bss段,代码段及数据段,堆栈段的区别 时间:2012-11-21 10:0772人阅读 BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英 ...

  5. (转)Linux下数据段的区别(数据段、代码段、堆栈段、BSS段)

    进程(执行的程序)会占用一定数量的内存,它或是用来存放从磁盘载入的程序代码,或是存放取自用户输入的数据等等.不过进程对这些内存的管理方式因内存用途 不一而不尽相同,有些内存是事先静态分配和统一回收的, ...

  6. 为QNetworkAccessManager添加超时提醒(自己记录一段时间里的下载字节数,用定时器去定期检测,从而判断是否超时)

    在做更新,在测试异常的时候,在下载过程中,发现如果直接系统禁用了网络,会报错误,可以捕获.但是如果是第三方软件限制程序联网,问题来了. 程序会一直在那里等待,没有异常,也不发送QNetworkAcce ...

  7. 浅析堆栈段,BBS段,数据段,代码段

    文章目录 1. 进程,线程 2. 堆栈段 3. BBS段 4. 代码段 5. 数据段 6. 例子 7. 总结 1. 进程,线程 所谓进程是指在系统中能独立运行并作为资源分配的基本单位,程序段,数据段和 ...

  8. C# 一段绘图代码 在form_load事件不能显示图

    今天无意将一段绘图代码 写在form_load事件了,结果不能显示绘图.(代码:Graphics g = this.CreateGraphics();Pen pen = new Pen(Color.R ...

  9. 【转】可执行程序包括BSS段、数据段、代码段

    可执行程序包括BSS段.数据段.代码段(也称文本段). 一.BSS BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域.特点是:可 ...

  10. 一段C++代码想到的问题

    今天在学习<Unix环境高级编程>,第七章进程环境给出了一个进程的内存分布示意图,从下往上依次为“正文段->初始化数据->未初始化数据(默认初始化为0)->堆(从低地址到 ...

随机推荐

  1. 【人工智能】【Python】Numpy基础

    Numpy 目录 Numpy Numpy简介 ndarray与原生Python List运算效率对比 N阶数组 ndarray (1)创建数组 (2)生成数组 生成纯1数组 生成纯0数组 从现有数组生 ...

  2. Docker 使用 buildx 构建多种系统架构支持的镜像

    在 Docker 19.03+ 版本中可以使用 docker buildx build 命令使用 BuildKit 构建镜像.该命令支持 --platform 参数可以同时构建支持多种系统架构的 Do ...

  3. Qt音视频开发03-ffmpeg倍速播放(半倍速/2倍速/4倍速/8倍速)

    一.前言 用ffmpeg做倍速播放,是好多年都一直没有实现的功能,有个做法是根据倍速参数,不断切换播放位置,实现效果不是很好,ffplay中的倍速就做得很好,而且声音无论倍速多少还非常柔和,有特别的降 ...

  4. Qt编写地图综合应用39-覆盖物圆形

    一.前言 圆形的应用场景和多边形.矩形基本一致,支持的属性也是一致,比如可以设置线条的颜色.线条的粗细.线条透明度等.也是用来框起一块区域,然后根据坐标点集合,找到该区域内的标注点集合,比如指定某个县 ...

  5. [转]OpenLayers基于Vue项目的搭建

    主要内容上次介绍了什么是OpenLayers以及其他的可以GIS工具,这次说说如何基于Vue搭建OpenLayers的项目,并且实现地图的加载. 一.vue项目搭建1.全局安装vue-cil npm ...

  6. 大型IM工程重构实践:企业微信Android端的重构之路

    本文由腾讯技术yeconglu分享,原题"企业微信大型Android系统重构之路",下文进行了排版和内容优化等. 1.引言 企业微信本地部署版(下文简称为本地版)是从2017年起, ...

  7. WxPython跨平台开发框架之前后端结合实现附件信息的上传及管理

    在使用 wxPython 开发跨平台应用时,结合后端实现附件信息的上传和管理是一种常见需求.WxPython跨平台开发框架是前后端分离的框架,前端采用的是WxPython + aiohttp 来构建跨 ...

  8. 工程目录下.git目录过大文件清理

    1. 查看当前5个大文件 git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx ...

  9. Note -「Lagrange 反演」记笔习学

      也许施工完成啦?   对于常数项为 \(0\),一次项非 \(0\) 的多项式 \(F,G\),定义复合运算 \(\circ\),满足 \[(F\circ G)(x)=F(G(x))=\sum_{ ...

  10. Redis中缓存预热、击穿、雪崩等问题解决方案-copy

    1.缓存雪崩 缓存雪崩是指缓存同一时间大面积的失效,所以,后面的请求都会落到数据库上,造成数据库短时间内承受大量请求而崩掉. 解决方案 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生. ...