mysql - SELECT 不同日期的记录 SQL

标签 mysql sql select grouping having

我想获取数据库中拥有 3 条或更多记录的所有用户,但他们不能具有相同的日期。示例表:

User1 40 12/11/15
User1 33 13/11/16
User1 23 04/09/16
User2 21 30/09/16
User3 12 12/11/16
User3 54 12/11/16
User3 99 04/09/16

所以从这里开始,我只想获取User1,User3有3条记录,但由于其中2条是在同一天,所以他不符合条件。 (如果有两条或多条记录在同一天就可以,只要至少有 3 条记录在不同的日期即可,所以如果我们为 user3 在不同的日期再添加一条记录,他也满足要求.)

这是我到目前为止的查询:

SELECT id, price, date
FROM Table
WHERE id
IN (

SELECT id
FROM Table
GROUP BY id
HAVING COUNT( ocust ) >=3
)

它满足拥有 3 条或更多记录的要求,但我不知道如何满足不同的日期要求。

最佳答案

您只需将 DISTINCT 添加到 COUNT 中,并将 ocust (无论是什么)更改为 date >:

SELECT id, price, date
FROM Table
WHERE id
IN (
    SELECT id
    FROM Table
    GROUP BY id
    HAVING COUNT(DISTINCT date ) >=3   -- Added DISTINCT, changed 'ocust' to 'date'
)

关于mysql - SELECT 不同日期的记录 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40565012/

相关文章:

mysql - CakePHP 新手 -> 如何向 MySQL 表添加列?

java - 如何使用 JDBC Appender 将错误日志保存到数据库中

php - 查找前 5 条记录的 Eloquent 查询

php - 使用 PHP 计算 Oracle 中所选行的数量

c# - 将值添加到行、检索它们并拆分它们

php - 尝试让 INSERT 仅插入新数据

MySQL 选择,用分隔符连接

php - 从选择查询设置变量

MySql Left Join 不保留左表

javascript - 根据选择更改选定值