MySQL:多行内的 "AND"条件

标签 mysql group-by

表格如下所示:

id | event_id | date |

  1 | 2 | 2016-04-29
  2 | 2 | 2016-04-31
  3 | 1 | 2016-04-30
  4 | 1 | 2016-04-31

我需要运行一个查询,该查询将返回分组的 event_ids,其中包含请求时间段之间的所有日期

例如,查看上表:

如果查询是(=> 2016-04-29 ) :( <= 2016-04-31 ) ,不应返回任何事件。

如果查询是(=> 2016-04-30 ) :( <= 2016-04-31 ) ,应该返回 event_id = 1。

如何解决这个问题?

最佳答案

你会想到这样的事情:

SELECT event_id AS eid FROM `test` WHERE date BETWEEN '2016-04-30' AND '2016-04-31'
GROUP BY event_id
HAVING COUNT(*) = (SELECT COUNT(*) FROM `test` WHERE event_id = eid)

或者这个:

SELECT event_id AS eid FROM `test` WHERE date IN ('2016-04-30', '2016-04-31')
GROUP BY event_id
HAVING COUNT(*) = (SELECT COUNT(*) FROM `test` WHERE event_id = eid)

顺便说一句,四月只有 30 天

关于MySQL:多行内的 "AND"条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36939170/

相关文章:

MySQL:如何将多个表关联在一起

c# - 如何解决 Asp.Net 3.0 将数据库从 SQLite 迁移到 MySQL 的问题?

MySQL GROUP BY 和 SORT BY 与 JOINS

MYSQL - 按名称分组并在结果中包含其他列的相应值

mysql - 在 MySQL 数据库中导入一个很长的字符串列表

java - 单击按钮时不显示图像

php mysql 转储不工作

MySQL 分组依据 where day <= x

mysql - 检索每组中的最后一条记录 - MySQL

Python 提取一个新的数据框