1

我有两个表,我正在尝试加入并根据另一列的最大值加上另一个表中的标识符在一个列中获取唯一值。这是我的结构。

Partial Table 1 (reward_webuid):
╔════╦═════════╦═════════╦══════════╦═════════════════════╦═════════╗
║ ID ║ WEB_UID ║ ITEM_ID ║ PLAYERID ║      TIMESTAMP      ║ EXPIRED ║
╠════╬═════════╬═════════╬══════════╬═════════════════════╬═════════╣
║  8 ║ 1209520 ║   73410 ║  1926406 ║ 2013-01-05 04:47:06 ║       0 ║
║  9 ║ 1209520 ║   73425 ║  1926406 ║ 2013-01-02 09:40:27 ║       1 ║
║ 10 ║ 1209520 ║   73424 ║  1926406 ║ 2013-01-05 09:40:05 ║       0 ║
║ 11 ║ 1209520 ║   73425 ║  1926406 ║ 2013-01-05 09:40:27 ║       0 ║
║ 12 ║ 1209521 ║   73424 ║ 21555896 ║ 2013-01-05 01:33:20 ║       0 ║
║ 13 ║ 1209521 ║   75000 ║  5599854 ║ 2013-01-05 01:35:09 ║       1 ║
╚════╩═════════╩═════════╩══════════╩═════════════════════╩═════════╝

Partial Table 2 (rewards):
╔═════════╦═════════════════╦══════════════╦═════════════╗
║ ITEM_ID ║ CUST_LOADOUT_ID ║ REWARD_LEVEL ║ EXPIRY_TIME ║
╠═════════╬═════════════════╬══════════════╬═════════════╣
║   73410 ║               1 ║            5 ║           0 ║
║   73424 ║               2 ║           10 ║           0 ║
║   73425 ║               3 ║           15 ║          30 ║
║   75000 ║               4 ║           50 ║          60 ║
╚═════════╩═════════════════╩══════════════╩═════════════╝

我想获得的样本返回(cust_loadout_id 和 playerID 用于奖励级别的最大值,基于表 1 中尚未过期的 item_id)每个 playerID 应该只有一个值

╔══════════╦═════════════════╗
║ PLAYERID ║ CUST_LOADOUT_ID ║
╠══════════╬═════════════════╣
║  1926406 ║               3 ║
║ 21555896 ║               2 ║
╚══════════╩═════════════════╝

如果有人可以提供帮助,将不胜感激。我搜索了大多数与同一张表或 3 个或更多表相关的查询。我管理的最好的方法是返回我需要的数据,但它没有正确排序

4

1 回答 1

1
SELECT  a.*, b.*
FROM    reward_webuid a
        INNER JOIN rewards b
            ON a.item_id = b.item_ID
        INNER JOIN
        (
            SELECT  aa.PLAYERID, MAX(bb.REWARD_LEVEL) maxLevel
            FROM    reward_webuid aa
                    INNER JOIN rewards bb
                        ON aa.item_id = bb.item_ID
            WHERE   aa.expired = 0
            GROUP   BY aa.PLAYERID
        ) c ON  a.PLAYERID = c.PLAYERID AND
                b.REWARD_LEVEL = c.maxLevel AND
                a.Expired = 0
于 2013-01-05T10:34:22.553 回答