我有一个mysql表,其中有很多用户的约会。但我检测到一个特定的用户 2018-09-26
以及 2018-09-29
完全被跳过了,我不知道为什么。
代码如下:
SELECT
*
FROM
appointments
WHERE
appday >= '2018-09-26 00:00:00'
AND
(
user1 = 'User name'
OR
user2 = 'User name'
OR
user3 = 'User name'
)
GROUP BY
DAY(appday)
ORDER BY
appday ASC
``` `appday` 是一个 `datetime` 现场。有趣的是,除了上面提到的那些,它每隔一天和其他所有用户都可以使用。这个问题只发生在一个特定的用户身上。
如果我删除groupby子句,则会显示所述日期的约会,直到我添加groupby,它们才被返回。
编辑:这是它生成的结果:
![](https://i.stack.imgur.com/HyRFB.png)
3条答案
按热度按时间yr9zkbsy1#
我没有关于您的数据集和所有结果的完整信息,但我觉得您可能需要函数dayofyear,因为您提取的是两个月内的天数,而不是dayofmonth的同义词day。使用day的含义是,只能有1-31之间的唯一数字,这些数字都是潜在的dayofmonths。
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_day
bvpmtnay2#
查找不需要分组的约会列表,
group by
通常适用于聚合函数,或者如果您需要任何组,我只是从您的查询中删除groupbysz81bmfz3#
谢谢大家的意见。我试着用不同的方式来满足需求,所以我做到了。我没有在groupby中进行查询,而是选择只进行一次查询,并在迭代过程中检查当前日期是否与前一天相同,如果相同,则不添加标题。