Mysql 从表A中按表B字段分组的X玩家获得每种奖金类型的最后记录
正如标题所述,我想从表中获得X玩家的每个奖金id的最后一条记录“赎回的奖金”按表奖金中的名称字段分组 这是我的数据库结构:Mysql 从表A中按表B字段分组的X玩家获得每种奖金类型的最后记录,mysql,max,Mysql,Max,正如标题所述,我想从表中获得X玩家的每个奖金id的最后一条记录“赎回的奖金”按表奖金中的名称字段分组 这是我的数据库结构: 表:奖金 "id" "uid" "name" "free_spins" -------------------------------------------------------- "1" "1111111111111" "welcome_bonus" "0" "2"
表:奖金
"id" "uid" "name" "free_spins"
--------------------------------------------------------
"1" "1111111111111" "welcome_bonus" "0"
"2" "1111111111112" "deposit100_bonus" "0"
"3" "1111111111113" "deposit150_bonus" "0"
"4" "1111111111114" "deposit200_bonus" "0"
"5" "1111111111111" "welcome_bonus" "10"
"6" "1111111111112" "deposit100_bonus" "10"
"7" "1111111111114" "deposit200_bonus" "10"
"8" "1111111111112" "deposit100_bonus" "50"
表:玩家
"id" "username"
------------------
"1" "pepe"
"2" "pedro"
"27" "david"
"28" "jorge"
"id" "player_id" "bonus_id" "instance_id"
-----------------------------------------------------
"1" "1" "7" "abcd456"
"2" "28" "1" "abc2356"
"3" "2" "7" "ghb564"
"4" "27" "1" "dfv444"
"5" "27" "6" "vbb333"
"6" "27" "8" "vd4332"
表:赎回的奖金
"id" "username"
------------------
"1" "pepe"
"2" "pedro"
"27" "david"
"28" "jorge"
"id" "player_id" "bonus_id" "instance_id"
-----------------------------------------------------
"1" "1" "7" "abcd456"
"2" "28" "1" "abc2356"
"3" "2" "7" "ghb564"
"4" "27" "1" "dfv444"
"5" "27" "6" "vbb333"
"6" "27" "8" "vd4332"
玩家id 27的期望结果:
"id" "player_id" "bonus_id" "instance_id" "bonuses.name"
-----------------------------------------------------------------------------
"4" "27" "1" "dfv444" "welcome_bonus"
"6" "27" "8" "vd4332" "deposit100_bonus"
传统信息:我在查看和,但两者都不是我的情况。部分答案;我不知道你从哪里得到4号和6号身份证
SELECT a.*
, c.instance_id
FROM bonus_records a
JOIN
(
SELECT uid
, player_id
, MAX(x.id) bonus_id
FROM bonus_records x
JOIN redeemed_bonus_records y
ON y.bonus_id = x.id
WHERE y.player_id = 27
GROUP
BY uid
, player_id
) b
ON b.bonus_id = a.id
JOIN redeemed_bonus_records c
ON c.bonus_id = a.id
AND c.player_id = b.player_id;
+----+-----+------------------+------------+-------------+
| id | uid | name | free_spins | instance_id |
+----+-----+------------------+------------+-------------+
| 1 | 11 | welcome_bonus | 0 | dfv444 |
| 8 | 12 | deposit100_bonus | 50 | vd4332 |
+----+-----+------------------+------------+-------------+
做得很好,提供了一个小提琴,但链接的答案完全满足您的需要谢谢回应,但我已经尝试过,并没有给我预期的结果。如果需要,我可以刷新该查询的db FIDLE,您将看到。@我已更新的db FIDLE的查询,但结果不是预期的结果,因为我有两个其他表用于获取最大id,而不是同一个表。您的数据集不能代表问题,或者您对问题的描述不充分。描述已编辑。总之,我不知道为什么如果我把我想要得到的东西放得很清楚,数据就没有代表性。试着添加更多的列,比如instance_id和compare。您将看到,虽然它返回max id,但其余列不属于max id行,这就是链接答案的所在。我将尝试以最好的方式向您解释。奖金记录表包含按名称或uid分组的不同奖金,即所有具有相同名称的行,即相同奖金的不同版本。因此,我想获得表中每种类型奖金的最后一行(按奖金记录.name分组),对应于27号玩家的兑换奖金记录。您的查询仍然不起作用,并且要检查,如果您添加了实例id,您将看到它不断返回奖金记录行。我的查询返回id 1和8,因此,如果您在bonus\u id=id上将赎回的\u奖金加入到上面,您将获得正确的行!?!