gpt4 book ai didi

php - MySQL GROUP BY 查询仅返回一行

转载 作者:行者123 更新时间:2023-11-29 23:24:53 25 4
gpt4 key购买 nike

    $q2 =   "SELECT startdate, 
GROUP_CONCAT(summary separator '<br />') as summary,
GROUP_CONCAT(TIME(startdate)) AS starttime,
GROUP_CONCAT(TIME(enddate)) AS endtime
FROM oc_clndr_objects
WHERE calendarid = $calID
GROUP BY DATE(startdate)
ORDER BY startdate ASC";

上面的查询仅返回一个结果(如预期的那样,一个日期有 3 个事件) - 但是有 1 个事件每天重复,并且查询不会超出第一个开始日期。

我知道它与 GROUP BY 子句和聚合函数有关,但我无法理解它。 - 输出可见于 http://www.deliriousdreams.co.uk/ - “DJ时间表测试”

任何有关纠正稍微非法的 SQL 查询的帮助将不胜感激。

编辑:好吧,聪明的人们,修改为 DATE(startdate) AS startdate。一个小问题,之后我希望能够按日期和时间(最早的第一个)对它们进行排序 - 显然,日期和时间都是从开始日期(日期时间标记)派生的 - 这可以通过修改上面的查询来实现吗?我必须做一些 PHP 巫术吗?

最佳答案

您选择开始日期,但按日期(开始日期)分组

如果字段开始日期是日期时间,并且您只想按日期分组,那么您应该选择一个数据并按日期分组。

尝试将您的查询更改为此

         SELECT DATE(startdate) AS startdate, 
GROUP_CONCAT(summary separator '<br />') as summary,
GROUP_CONCAT(TIME(startdate)) AS starttime,
GROUP_CONCAT(TIME(enddate)) AS endtime
FROM oc_clndr_objects
WHERE calendarid = $calID
GROUP BY DATE(startdate)
ORDER BY startdate ASC

我希望 $calID 是干净的变量,否则你的代码会受到 SQL 注入(inject)

关于php - MySQL GROUP BY 查询仅返回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27047014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com