如何按名称,日期分组并限制current_date

时间:2018-10-05 02:16:38

标签: php mysql mysqli

我正在制作一个聊天机器人,人们可以在一个android游戏中发送他的报告,因此我创建了一个php页面,您可以在其中基于mysql查询查看当天的报告。但是我无法创建正确的查询。这是我尝试过的:

select
    id, nickname, fecha, bestia1, bestia2, bestia3, bestia4, bestia5
from
    reporte
where
    fecha > CURRENT_DATE()
group by
    nickname DESC

如您所见,我的表“报告”保存了一个字符发送的信息,但是一个字符每天可以发送许多报告,因此我只想显示每个名称的最新报告。

我需要按昵称分组,按日期排序,并获取每个昵称的最新报告,但是我对此有疑问。我见过许多类似的帖子,但仍然无法弄清楚我该怎么做。我需要帮助,谢谢!

my actual code my select from order by date. but i want to show the latest per nickname

2 个答案:

答案 0 :(得分:0)

您错过了查询的order by部分。

假设其余部分正确,这是您的查询:

select id,nickname, fecha,bestia1,bestia2,bestia3,bestia4,bestia5 from reporte WHERE fecha>CURRENT_DATE() group by nickname order by id DESC

有一个分组依据,您可能需要将id更改为max(id)

答案 1 :(得分:0)

首先,您需要查询表报告以获得每个昵称的最新注册信息的 fecha ,如下所示:

西班牙语翻译:

Primero,律师顾问报告副主席 fecha 代理人昵称:

SELECT nickname, MAX(fecha)
FROM reporte
GROUP BY nickname

现在,我将向您展示如何加入上一个查询,以获取与每个与昵称相关的最新报告有关的其余数据:

西班牙语翻译:

Ahora,加入了大多数咨询机构,并获得了进一步的协助,昵称

SELECT
    r1.id,
    r1.nickname,
    r1.fecha,
    r1.bestia1,
    r1.bestia2,
    r1.bestia3,
    r1.bestia4,
    r1.bestia5
FROM
    reporte AS r1
INNER JOIN
    (
      SELECT nickname, MAX(fecha) AS max_date
      FROM reporte
      GROUP BY nickname
      HAVING MAX(fecha) >= CURRENT_DATE()
    ) AS latests_reports ON latests_reports.nickname = r1.nickname AND latests_reports.max_date = r1.fecha