gpt4 book ai didi

php - mysql 按日期时间选择一列中的所有唯一行和另一列中的所有最大行

转载 作者:行者123 更新时间:2023-11-29 23:08:55 26 4
gpt4 key购买 nike

我需要的是为每个table_id获取最新的(按日期时间)唯一的player_id

表:

buyin_id   player_id   table_id       date_time
---------|-----------|----------|--------------------|
1 | 10 | 21 | 2015-01-26 00:00:01
2 | 11 | 21 | 2015-01-26 00:00:02
3 | 12 | 21 | 2015-01-26 00:00:03
4 | 10 | 21 | 2015-01-26 00:00:04
5 | 11 | 21 | 2015-01-26 00:00:05
6 | 12 | 22 | 2015-01-26 00:00:06
7 | 13 | 22 | 2015-01-26 00:00:07
8 | 13 | 22 | 2015-01-26 00:00:08

期望的结果:

buyin_id   player_id   table_id       date_time
---------|-----------|----------|--------------------|
3 | 12 | 21 | 2015-01-26 00:00:03
4 | 10 | 21 | 2015-01-26 00:00:04
5 | 11 | 21 | 2015-01-26 00:00:05
6 | 12 | 22 | 2015-01-26 00:00:06
8 | 13 | 22 | 2015-01-26 00:00:08

我尝试了类似的方法,它只返回 1 行,而不是每个 table_id 1 行

SELECT pb.buyin_id, pb.player_id, pb.buyin, pb.cashout, pb.cashout_error, pb.date_time
FROM poker_buyin AS pb
INNER JOIN (SELECT player_id, MAX(date_time) AS MaxDateTime
FROM poker_buyin GROUP BY player_id) groupedpb
ON pb.player_id = groupedpb.player_id
AND pb.date_time = groupedpb.MaxDateTime
WHERE pb.player_id = '$player_id'";

最佳答案

您提到的查询查找每个玩家 ID 的最新记录。然后您对其进行过滤以仅查找一名玩家,因此您得到一行。

如果你想找到每个玩家和牌 table 的最新记录,你的内部查询需要是这样的:

            SELECT  MAX(buyin_id) buyin_id
FROM poker_buyin
GROUP BY player_id, table_id

这将从您的表格中获取代表最新玩家/表格组合的行 ID。

然后使用它从表中提取记录,如下所示 ( http://sqlfiddle.com/#!2/be68b7/2/0 )

SELECT whatever_columns
FROM poker_buyin
WHERE buyin_id IN
(
SELECT MAX(buyin_id) buyin_id
FROM poker_buyin
GROUP BY player_id, table_id
)
WHERE player_id = '$player_id'
ORDER BY player_id, table_id

此查询中有一个小技巧:buyin_id 值不断上升,因此这是为每个组合选择最新记录的好方法。

关于php - mysql 按日期时间选择一列中的所有唯一行和另一列中的所有最大行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28162666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com