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. Dapr-6 Dapr 服务调用构建块

    第 6 章 Dapr 服务调用构建块 https://docs.microsoft.com/en-us/dotnet/architecture/dapr-for-net-developers/serv ...

  2. ASP.NET Core IHostBuilder

    HostBuilder 很显然,HostBuildr 就是用来构建 Host 的构建器. IHostBuilder 定义 通过 Build() 方法,构建器返回构建的 IHost 对象实例. 具体怎么 ...

  3. PHP 简易的BASE64加密

    有这样一个有趣的公式:x<100;  (x*53*17)%100 = x;这个公司的原理:53*17=901,x*901,的数后2位数还是x:任何符合 a * b = 100 * n +1 的值 ...

  4. 龙哥量化:缠中说禅(缠论)K线包含处理

    声明:看到研究非常细致深入的文章,转载到我的博客园,以便学习和研究. (转载知乎的DennisWin) 缠中说禅技术理论包括两大部分:缠论形态学和缠论动力学.其中形态学是根本,动力学是辅助.缠论形态学 ...

  5. Qt编写可视化大屏电子看板系统18-柱状分组图

    一.前言 柱状分组图是柱状堆积图的衍生或者另外一种展示效果,设置的数据值数据源集合完全一样,只不过就是把柱子给拿下来了放在旁边,然后一个分组多个柱子横向排列,不同分组之间有一定的空隙隔开,默认QCus ...

  6. 生产环境Sentinel改造实践(一):Sentinel核心概念

    一.前言 本文主要是对sentinel-dashboard源码进行改造,用在生产环境保障其高可用,主要改造点如下: 接入nacos支持规则管理及推送 监控数据存入influxDb,后续可开发对应的监控 ...

  7. ESLint is disabled since its execution has not been approved or denied yet

    VS Code 装好ESLint 插件报黄线的问题,具体解决方法如下所示: ESLint is disabled since its execution has not been approved o ...

  8. OpenGL ES 3.x游戏开发(上+下卷)书籍的电子版+源程序

    直接附上电子书以及源代码下载链接:https://pan.baidu.com/s/1G10hw5aIi-Bc2LyktwKrdg

  9. 如何像专家一样高效使用 Google 搜索

    如何像专家一样高效使用 Google 搜索 你几乎可以在互联网上搜索到任何内容,而Google是大多数人选择搜索信息的主要途径之一. 尽管频繁地使用Google,但是大部分互联网用户都不知道如何快速和 ...

  10. 异步 QQ 机器人框架_NoneBot

    一.NoneBot使用 1) #监控发送的消息"群发"的事件@on_command('send_msg', aliases=('群发',))async def send_msg(s ...