首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我要从MySQL中的另一行中得到结果?

问为什么我要从MySQL中的另一行中得到结果?
EN

Stack Overflow用户
提问于 2020-04-03 15:39:36
回答 1查看 61关注 0票数 0

使用这个查询,

代码语言:javascript
复制
SELECT username, MAX(wordpermin) as maxword,date_created FROM user_records where DATE(date_created) = CURDATE() GROUP BY(username) ORDER BY maxword DESC LIMIT 20

我试图查询20个顶级wordpermin的用户名和创建时间限制,并在当前24小时内调用date_created。

我遇到的问题是什么时候我有一个新的高wordpermin。它没有给我提供新的date_created,而是保留了date_created的旧值。我甚至查看了我的数据库,并确保我更新了date_created。怎么会发生这种事?

我的意思是,我有两个值来自不同的行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-03 15:59:01

下面的查询给出用户使用maxword的最后一个日期。

当您激活ONLY_FULL_GROUP_BY时,您的查询将不会运行。

您应该始终为指定要使用的每个列,因为聚集函数行没有任何顺序,而且每个列都将自行选择。

我选择了Max (date_created),以便MySQL知道要显示哪个日期,因为如果有多个具有相同最大单词的日期,MySQL将显示所有日期。

代码语言:javascript
复制
SELECT
    u.username, u1.maxword, MAX(u.date_created)
FROM
    user_records u
        INNER JOIN
    (SELECT
        username,DATE(date_created) date_created, MAX(wordpermin) AS maxword
    FROM
        user_records
    GROUP BY username,DATE(date_created)) u1 ON u.username = u1.username
        AND u.wordpermin = u1.maxword AND Date(u.date_created) = DATE(u1.date_created)
WHERE
    DATE(u.date_created) = CURDATE()
GROUP BY (username)
ORDER BY maxword DESC
LIMIT 20;
LIMIT 20

试件http://sqlfiddle.com/#!9/857355/2

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61015452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档