MySQL GROUP BY函数奇怪地跳过了几天

时间:2018-09-26 02:07:45

标签: mysql group-by

我有一个MySQL表,为一堆用户提供了一堆约会。但是我检测到一个特定的用户,其对2018-09-262018-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字段。有趣的是,除上述提到的内容外,它每隔一天和每个其他用户都可以使用。而且只有一个特定的用户会发生此问题。

如果我删除Group By子句,则会显示上述几天的约会,直到我添加Group By为止,这些约会才完全不返回。

编辑:这是它生成的结果: groupby example

3 个答案:

答案 0 :(得分:2)

要查找约会列表,您不需要分组依据,group by通常适用于聚合功能,或者如果您想要明显地分组,我只是从查询中删除分组依据

SELECT
        *
    FROM
        appointments
    WHERE
        appday >= '2018-09-26 00:00:00'
        AND 
        (
            user1 = 'User name'
            OR
            user2 = 'User name'
            OR
            user3 = 'User name'
        )

    ORDER BY
        appday 

答案 1 :(得分:0)

谢谢大家的投入。我试图以不同的方式满足需求,所以我做到了。我选择只执行一个查询,而不是在Group By中进行查询,并在迭代过程中检查当前的DAY是否与前一个DAY相同,如果是,则不添加标题。

答案 2 :(得分:0)

我没有有关您的数据集和所有结果的完整信息,但我觉得您可能需要dayofyear函数,因为您提取的是两个月以上的日期,而不是dayofmonth的同义词day。使用day的含义是,您只能使用1-31范围内的唯一数字,这是所有可能的月日。

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_day