mysql - 返回查询中每个 ID 的第一个

标签 mysql sql

我的表格结构如下:

schema diagram

我正在尝试为每个玩家选择最新的盘口,因此按日期和玩家 ID 排序。

考虑以下查询:

SELECT h.id, h.playerId, h.amount, h.date
FROM hancicap h
WHERE h.date < '2012-06-11'
ORDER BY h.playerId ASC, h.date DESC

这会产生如下结果:

example data

(带下划线的行是我想要返回的行)

我的第一个想法是添加一个GROUP BY h.playerId,但这会导致错误的值。我完全陷入困境,非常感谢所有建议和想法!

不确定我应该给该线程命名什么。进行编辑以使名称更正确就好了。

最佳答案

您可以使用子查询来过滤掉最新的行:

select  *
from    players p1
where   p1.id =
        (
        select  id
        from    players p2
        where   p2.playerId = p1.playerId
        order by
                date desc
        limit   1
        )

关于mysql - 返回查询中每个 ID 的第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11010373/

相关文章:

mysql - mysql中的对象存储

mysql - SQL 列值作为表名

php - 连接mysql时出现110连接超时错误

sql - 如何处理数据库中的并发更新?

mysql - 在 SQL 查询/子查询中同时选择匹配和不匹配的结果

mysql - SQL if 查询功能

php - 带冒号的查询 ( :) in the search variable using pdo

mysql - 使用一个查询的可查询列表结果作为另一个查询的参数?

php - 使用 PHP 和 SQL 对调查问卷数据进行排序

sql - 从嵌套选择 T-SQL 中选择