SQL受唯一所选列的计数限制

时间:2017-11-24 07:51:41

标签: mysql sql xenforo

我尝试通过发送SQL请求获得有限的输出结果:

但它受到玩家数量的限制,但我需要按地图数限制。

我无法做到,无法在StackOverflow中找到示例

public static function GetWarcraftAccountsWithMapCodeLimited( $startid, $count )
{
    //XenForo DB
    $db = \XF::db();
    //Send request
    $waracc = $db->fetchAll("SELECT acct_username, acct_username_forum, acct_playingmap FROM wc_BNET WHERE acct_playingmap <> '' LIMIT ?, ?",[$startid, $count]);
    // return result
    return $waracc;
}

示例数据:

ID  acct_username   acct_username_forum acct_playingmap 
1   Nickname1       UserName1           TestMap1
2   Nickname2       UserName2           WelcomeMap2
3   Nickname3       UserName3           NewMap3
4   Nickname4       UserName4           TestMap1
5   Nickname5       UserName5           TestMap1
6   Nickname6       UserName6           AndMap4
7   Nickname7       UserName7           NewMap5
8   Nickname8       UserName8           NewMap66
9   Nickname9       UserName9           NewMap777
10  Nickname10      UserName10          NewMap88
11  Nickname11      UserName11          NewMap999
12  Nickname12      UserName12          NewMap10
13  Nickname13      UserName13          NewMap111

在我的SQL响应结果中受行ID计数限制

但我需要受到acct_playingmap

的限制

示例需要的结果受到2张地图的限制:

   acct_username   acct_username_forum acct_playingmap 
   Nickname1       Username1           TestMap1
   Nickname2       Username2           WelcomeMap2
   Nickname4       Username4           TestMap1
   Nickname5       Username5           TestMap1

如何受限于唯一的acct_playingmap计数?

的信息:

可以是10000名玩家,玩1000张地图,例如我需要结果限制10张地图,所有玩家都可以玩这张地图!

(I need to get the result limited to unique number of acct_playingmap values.)

加入

需要首先需要的唯一地图,然后通过此值获得所有玩家? 但如果地图大于100,我就无法做到吗? (可以是非常大的请求大小)

1 个答案:

答案 0 :(得分:0)

    SELECT acct_username, acct_username_forum, acct_playingmap FROM wc_BNET_TEST WHERE acct_playingmap IN 
    (
        SELECT * FROM 
        (
            SELECT DISTINCT acct_playingmap FROM wc_BNET_TEST WHERE acct_playingmap <> '' LIMIT 4 
        ) AS FUCC_MYSQL
    )  

这个有效!感谢D Ie寻求帮助。