从表 b

注意标题,我不知道如何准确地表达这一点,但我认为它应该解释我想要实现的目标。

我有两张桌子,一张用于“玩家”,每个玩家只有一行,第二张表包含所有玩家的“事件”,其中包括对玩家帐户的各种更改。

DESCRIBE PLAYERS;
+-----------------+-------------+------+-----+---------+----------------+
| Field           | Type        | Null | Key | Default | Extra          |
+-----------------+-------------+------+-----+---------+----------------+
| ID              | bigint(20)  | NO   | PRI | NULL    | auto_increment |
| ORIGINAL_REGION | varchar(4)  | NO   |     | NULL    |                |
| REGION          | tinyint(4)  | NO   |     | NULL    |                |
| accOUNT_ID      | bigint(20)  | NO   |     | NULL    |                |
| username        | varchar(16) | YES  |     | NULL    |                |
+-----------------+-------------+------+-----+---------+----------------+
DESCRIBE EVENTS;
+-----------------+-------------+------+-----+---------+----------------+
| Field           | Type        | Null | Key | Default | Extra          |
+-----------------+-------------+------+-----+---------+----------------+
| ID              | bigint(20)  | NO   | PRI | NULL    | auto_increment |
| ORIGINAL_REGION | varchar(4)  | NO   |     | NULL    |                |
| accOUNT_ID      | bigint(20)  | NO   |     | NULL    |                |
| TIMESTAMP       | bigint(20)  | NO   |     | NULL    |                |
| PREVIOUS_NAME   | varchar(16) | NO   |     | NULL    |                |
| NAME            | varchar(16) | NO   |     | NULL    |                |
| RENAMED         | tinyint(1)  | NO   |     | NULL    |                |
| PREVIOUS_REGION | tinyint(4)  | NO   |     | NULL    |                |
| REGION          | tinyint(4)  | NO   |     | NULL    |                |
| TRANSFER        | tinyint(1)  | NO   |     | NULL    |                |
+-----------------+-------------+------+-----+---------+----------------+

要获取所有玩家的列表和任何相关事件,我可以在玩家上留下加入事件

SELECT * FROM PLAYERS P LEFT JOIN EVENTS E ON P.accOUNT_ID=E.accOUNT_ID AND P.ORIGINAL_REGION=E.ORIGINAL_REGION;
+----+-----------------+--------+------------------+-----------+------+-----------------+------------------+---------------+-----------------+-----------------+---------+-----------------+--------+----------+
| ID | ORIGINAL_REGION | REGION | accOUNT_ID       | username  | ID   | ORIGINAL_REGION | accOUNT_ID       | TIMESTAMP     | PREVIOUS_NAME   | NAME            | RENAMED | PREVIOUS_REGION | REGION | TRANSFER |
+----+-----------------+--------+------------------+-----------+------+-----------------+------------------+---------------+-----------------+-----------------+---------+-----------------+--------+----------+
|  1 | EUW1            |      3 | 2592238782309408 | hawot2541 |    1 | EUW1            | 2592238782309408 | 1626896911435 | hawot2541       | XRO SCRIPTKID 2 |       1 |               3 |      3 |        0 |
|  1 | EUW1            |      3 | 2592238782309408 | hawot2541 |    3 | EUW1            | 2592238782309408 | 1626897970705 | XRO SCRIPTKID 2 | XRO SCRIPTKID 2 |       0 |               3 |      2 |        1 |
|  1 | EUW1            |      3 | 2592238782309408 | hawot2541 |    4 | EUW1            | 2592238782309408 | 1626898970705 | XRO SCRIPTKID 2 | sir hawloT      |       1 |               2 |      4 |        1 |
|  2 | EUN1            |      4 |              123 | testuser  | NULL | NULL            |             NULL |          NULL | NULL            | NULL            |    NULL |            NULL |   NULL |     NULL |
+----+-----------------+--------+------------------+-----------+------+-----------------+------------------+---------------+-----------------+-----------------+---------+-----------------+--------+----------+

我现在的问题是我无法查询此表以仅包含每个玩家的最新事件(基于时间戳)。

所需的输出如下所示:

+----+-----------------+--------+------------------+-----------+------+-----------------+------------------+---------------+-----------------+-----------------+---------+-----------------+--------+----------+
| ID | ORIGINAL_REGION | REGION | accOUNT_ID       | username  | ID   | ORIGINAL_REGION | accOUNT_ID       | TIMESTAMP     | PREVIOUS_NAME   | NAME            | RENAMED | PREVIOUS_REGION | REGION | TRANSFER |
+----+-----------------+--------+------------------+-----------+------+-----------------+------------------+---------------+-----------------+-----------------+---------+-----------------+--------+----------+
|  1 | EUW1            |      3 | 2592238782309408 | hawot2541 |    4 | EUW1            | 2592238782309408 | 1626898970705 | XRO SCRIPTKID 2 | sir hawloT      |       1 |               2 |      4 |        1 |
|  2 | EUN1            |      4 |              123 | testuser  | NULL | NULL            |             NULL |          NULL | NULL            | NULL            |    NULL |            NULL |   NULL |     NULL |
+----+-----------------+--------+------------------+-----------+------+-----------------+------------------+---------------+-----------------+-----------------+---------+-----------------+--------+----------+

我尝试了多个子查询,无论我能在网上找到什么查询。可悲的是没有人给出我需要的结果。我得到的最接近的是使用 GROUP BY accOUNT_ID,ORIGINAL_REGION 但这不允许我选择具有最新时间戳值的那个。

SELECT * FROM PLAYERS P LEFT JOIN EVENTS E ON P.accOUNT_ID=E.accOUNT_ID AND P.ORIGINAL_REGION=E.ORIGINAL_REGION GROUP BY P.accOUNT_ID,P.ORIGINAL_REGION;
+----+-----------------+--------+------------------+-----------+------+-----------------+------------------+---------------+---------------+-----------------+---------+-----------------+--------+----------+
| ID | ORIGINAL_REGION | REGION | accOUNT_ID       | username  | ID   | ORIGINAL_REGION | accOUNT_ID       | TIMESTAMP     | PREVIOUS_NAME | NAME            | RENAMED | PREVIOUS_REGION | REGION | TRANSFER |
+----+-----------------+--------+------------------+-----------+------+-----------------+------------------+---------------+---------------+-----------------+---------+-----------------+--------+----------+
|  2 | EUN1            |      4 |              123 | testuser  | NULL | NULL            |             NULL |          NULL | NULL          | NULL            |    NULL |            NULL |   NULL |     NULL |
|  1 | EUW1            |      3 | 2592238782309408 | hawot2541 |    1 | EUW1            | 2592238782309408 | 1626896911435 | hawot2541     | XRO SCRIPTKID 2 |       1 |               3 |      3 |        0 |
+----+-----------------+--------+------------------+-----------+------+-----------------+------------------+---------------+---------------+-----------------+---------+-----------------+--------+----------+

我已经尝试了好几个小时了,希望这里有人能告诉我这是否可行。

lililili521 回答:从表 b

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/57409.html

大家都在问