1

我有一张login_log桌子: 在此处输入图像描述

我正在尝试构建一个查询分组的“唯一”登录基于login_email, login_success, login_email, account_type_id, login_lock, login_ip

到目前为止我有

SELECT count(*) count, MAX(login_date) date, login_ip, login_email, account_type_id, login_lock, login_success
FROM `login_log`
GROUP BY login_email, login_success, login_email, account_type_id, login_lock, login_ip
ORDER BY date DESC

这让我: 在此处输入图像描述

但以第 5 行和第 6 行为例。在第 6 行,用户登录失败 3 次,然后在第 5 行成功登录。第 5 行的计数应为 1,但它将失败尝试之前的成功登录分组。

我想要的是成功登录的一行,登录失败的一行,然后是成功登录的一行,按日期排序。

如何对日期查询进行分组,以使它们不会相互“跳跃”?

4

1 回答 1

1

您的查询的问题是您没有在“分组依据”部分中按日期分组。结果,您的 Count(*) 不必要地增加。

添加:

Group By Date

会起作用,但可能不会给你正确的间隔。添加 MySQL Date() 函数将允许您按天拆分它,因此您将添加:

Group By Date(Date)

您可能还想将别名 Date 更改为非保留的 MySQL 关键字,如 LogDate 或类似的东西。

有关 MySQL 日期/时间函数的更多信息:http: //dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

于 2012-04-10T20:04:42.033 回答