如何通过 MYSQL 中的另一列选择具有 MAX(列值)、PARTITION 的行?

How can I SELECT rows with MAX(Column value), PARTITION by another column in MYSQL?(如何通过 MYSQL 中的另一列选择具有 MAX(列值)、PARTITION 的行?)
本文介绍了如何通过 MYSQL 中的另一列选择具有 MAX(列值)、PARTITION 的行?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我的桌子是:

<头>
id日期时间玩家资源
11004/03/2009约翰399
21104/03/2009朱丽叶244
51204/03/2009硼酸555
31003/03/2009约翰300
41103/03/2009朱丽叶200
61203/03/2009硼酸500
71324/12/2008硼酸600
81301/01/2009硼酸700

我需要选择每个不同的 home 保存 datetime 的最大值.

I need to select each distinct home holding the maximum value of datetime.

结果是:

<头>
id日期时间玩家资源
11004/03/2009约翰399
21104/03/2009朱丽叶244
51204/03/2009硼酸555
81301/01/2009硼酸700

我试过了:

-- 1 ..by the MySQL manual: 

SELECT DISTINCT
  home,
  id,
  datetime AS dt,
  player,
  resource
FROM topten t1
WHERE datetime = (SELECT
  MAX(t2.datetime)
FROM topten t2
GROUP BY home)
GROUP BY datetime
ORDER BY datetime DESC

不起作用.结果集有 130 行,尽管数据库有 187 行.结果包括 home 的一些重复项.

Doesn't work. Result-set has 130 rows although database holds 187. Result includes some duplicates of home.

-- 2 ..join

SELECT
  s1.id,
  s1.home,
  s1.datetime,
  s1.player,
  s1.resource
FROM topten s1
JOIN (SELECT
  id,
  MAX(datetime) AS dt
FROM topten
GROUP BY id) AS s2
  ON s1.id = s2.id
ORDER BY datetime 

没有.提供所有记录.

-- 3 ..something exotic: 

各种结果.

推荐答案

你们离得这么近!您需要做的就是选择家庭及其最大日期时间,然后在两个字段中加入 topten 表:

You are so close! All you need to do is select BOTH the home and its max date time, then join back to the topten table on BOTH fields:

SELECT tt.*
FROM topten tt
INNER JOIN
    (SELECT home, MAX(datetime) AS MaxDateTime
    FROM topten
    GROUP BY home) groupedtt 
ON tt.home = groupedtt.home 
AND tt.datetime = groupedtt.MaxDateTime

这篇关于如何通过 MYSQL 中的另一列选择具有 MAX(列值)、PARTITION 的行?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

ibtmp1是非压缩的innodb临时表的独立表空间,通过innodb_temp_data_file_path参数指定文件的路径,文件名和大小,默认配置为ibtmp1:12M:autoextend,也就是说在文件系统磁盘足够的情况下,这个文件大小是可以无限增长的。 为了避免ibtmp1文件无止境的暴涨导致
SQL query to group by day(按天分组的 SQL 查询)
What does SQL clause quot;GROUP BY 1quot; mean?(SQL 子句“GROUP BY 1是什么意思?意思是?)
MySQL groupwise MAX() returns unexpected results(MySQL groupwise MAX() 返回意外结果)
MySQL SELECT most frequent by group(MySQL SELECT 按组最频繁)
Include missing months in Group By query(在 Group By 查询中包含缺失的月份)