by-function有时会奇怪地跳过

bf1o4zei  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(328)

我有一个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)
yr9zkbsy

yr9zkbsy1#

我没有关于您的数据集和所有结果的完整信息,但我觉得您可能需要函数dayofyear,因为您提取的是两个月内的天数,而不是dayofmonth的同义词day。使用day的含义是,只能有1-31之间的唯一数字,这些数字都是潜在的dayofmonths。
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_day

bvpmtnay

bvpmtnay2#

查找不需要分组的约会列表, group by 通常适用于聚合函数,或者如果您需要任何组,我只是从您的查询中删除groupby

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
sz81bmfz

sz81bmfz3#

谢谢大家的意见。我试着用不同的方式来满足需求,所以我做到了。我没有在groupby中进行查询,而是选择只进行一次查询,并在迭代过程中检查当前日期是否与前一天相同,如果相同,则不添加标题。

相关问题