如何通过SQL中的另一列选择具有MAX(列值),DISTINCT的行?

卡帕塔

我的桌子是:

id  home  datetime     player   resource
---|-----|------------|--------|---------
1  | 10  | 04/03/2009 | john   | 399 
2  | 11  | 04/03/2009 | juliet | 244
5  | 12  | 04/03/2009 | borat  | 555
3  | 10  | 03/03/2009 | john   | 300
4  | 11  | 03/03/2009 | juliet | 200
6  | 12  | 03/03/2009 | borat  | 500
7  | 13  | 24/12/2008 | borat  | 600
8  | 13  | 01/01/2009 | borat  | 700

我需要选择每个home包含的最大值datetime

结果将是:

id  home  datetime     player   resource 
---|-----|------------|--------|---------
1  | 10  | 04/03/2009 | john   | 399
2  | 11  | 04/03/2009 | juliet | 244
5  | 12  | 04/03/2009 | borat  | 555
8  | 13  | 01/01/2009 | borat  | 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

不起作用 尽管数据库保留187个,但结果集有130行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两个字段表中:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

您可以从具有MIN或MAX值的行中获得另一列吗?

命名查询以SELECT的行具有MAX(列名),DISTINCT由另一列

查找一列中具有相同值而另一列中具有其他值的行?

SQL选择一列中具有重复值的所有行

如果另一列具有多个值,如何选择按列分组的值

如何在一列中选择具有相同值但在另一列中所有列必须彼此不同的行

如果另一列在SQL Server中相同,则获取具有最小列值的行

如何过滤具有一列中的选择值但具有公共ID的行?

通过SQL中的另一列对具有重复值的列进行排序

如何在Laravel查询构建器中获取一列具有最高值而另一列具有特定值的行

如何选择具有在一列中重复但在另一列中具有不同值的列值的行?

选择在一列中具有相同值而在另一列中具有不同值的行

删除一列中具有重复值但另一列中具有不同值的行

在标准SQL中,如何选择行,以便对于一列中的每个唯一值,另一列中的所有值都是指定值?

SQL选择在另一列中具有至少一个特定值的所有非唯一行

SQL如何基于另一列中的值在一行中多次选择列

给定另一列,选择一列具有不同值的行

从表中选择所有行,除了具有相同 id 的另一个表中的行在另一列中具有特定值

sql:使用单个查询在另一列中选择具有相同列值的行

在多行的一列中查找具有相同值的行,而另一列具有不同的值

如何根据另一列 SQL 中的值创建具有计数值的新列

使用 DB2,如何为一列选择具有 MAX 的行,然后在结果子集上为同一表的另一列选择具有 MAX 的行?

MySQL 查询一列中具有相同值而另一列中具有不同值的行

如何选择具有相同 id 并在另一列中具有所有缺失值的行

从 Pandas Dataframe 中选择一列中具有相同值而另一列中仅丢失的行

在 Pandas 中,如何选择在一列中有重复但在另一列中有不同值的行?

当另一列具有匹配值时,选择一列中具有最大值的行

如何删除另一列中具有特定值的所有 NaN 值的行?

在 SQL 中,如何选择在另一列中没有零值的最新日期