我有一个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
字段。有趣的是,除上述提到的内容外,它每隔一天和每个其他用户都可以使用。而且只有一个特定的用户会发生此问题。
如果我删除Group By子句,则会显示上述几天的约会,直到我添加Group By为止,这些约会才完全不返回。
答案 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