mysql查询根据计数标准过滤结果

标签 mysql

我正在尝试根据以下条件筛选结果以向我展示:我将写下我正在尝试的内容:

我有 4 个表:users、rp、rpa、rpud - 所有表都以 rfID 作为键,这是 users 表中的 PK

现在我正在尝试的是:Membership = 1 是基本成员(member)

  1. 查询users表和rp,rpa,rpud表,如果用户是普通成员(member),并且从未注册过成员(member)[如果他以前是成员(member),然后又成为成员(member),则其记录可以存在于rp,rpa中基本成员(member)。] 并且已达到他/她的最大下载次数 3,我应该能够只显示这些人

这是我正在尝试的,但似乎是错误的:

SELECT
id,firstname,lastname, membership
FROM
users 
where membership = 1 
and users.rfID not in (select rfID from rp) or users.rfID not in (select rfID from rpa) 
and count(rpud.rfID) <= 3

最佳答案

首先,您需要将逻辑从 or 更改为 and。您希望所有这些条件都成立。

其次,除非您首先在 from 子句中声明表名称,否则您不能提及表名称。以下内容应该满足您的要求:

SELECT id, firstname, lastname, membership
FROM users u
where u.membership = 1 and
      u.rfID not in (select rfID from rp) and
      u.rfID not in (select rfID from rpa) and
      u.rfId not in (select rfID from rpud group by rfid having count(*) > 3);

编辑:

为了提高性能,请尝试将这些更改为join:

SELECT id, firstname, lastname, membership
FROM users u left join
     rp
     on rp.rfID = u.rfID left join
     rpa
     on rpa.rfID = u.rfID left join
     (select rfID
      from rpud
      group by rfid
      having count(*) > 3
     ) rpud
     on rpud.rfID = u.rfId
where u.membership = 1 and rp.rfID is null and rpa.rfID is null and rpud.rfID is null;

关于mysql查询根据计数标准过滤结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27228145/

相关文章:

mysql - HQL:where 子句中的未知列

mysql - 当 ON 语句为 false 时表连接是否有效?

mysql - 使用临时的;使用文件排序..慢查询

php - 我应该使用什么数据类型将电子邮件存储在 mysql 数据库中?

mysql - 触发器创建查询失败

MySQL使用索引问题

java - 如何从 Java GUI 中的表插入到 mysql 数据库?

mysql - 将日期保存到 MySql 时 SQL 语法错误

php - 禁用短词删除的 MySQL 全文搜索

android - 将日期和时间从日期选择器和时间时间选择器对话框存储到 MySQL