2017-09-03 76 views
0

我的代码有点问题。 通常,我的代码应该显示杀死最多的玩家。 它应该看起来像这样C++ mysql order by is not ordered

user1 10 
user3 9 
user6 4 
user10 1 
user2 0 

但它只是随机排序。

这是我的代码:

if (mysql_query(&mysql, "SELECT Name, Kills FROM userdata ORDER BY (Kills) DESC LIMIT 0,10;")) 
{ 
    printf("ok"); 
} 
MYSQL_RES *result = mysql_store_result(&mysql); 

if (result == NULL) 
{ 
    printf("Result is null"); 
} 
int num_fields = mysql_num_fields(result); 

MYSQL_ROW row; 

int i; 
num_fields = mysql_num_fields(result); 
while ((row = mysql_fetch_row(result))) 
{ 
    unsigned long *lengths; 
    lengths = mysql_fetch_lengths(result); 
    for(i = 0; i < num_fields; i++) 
    { 
     printf("%.*s", (int) lengths[i], 
       row[i] ? row[i] : "NULL"); 
    } 
    printf(" \n"); 
} 

我希望你能帮帮我!

+0

这似乎是'尝试ORDER BY杀死DESC'给我。 –

+0

@RichardHodges这doens't改变任何东西 – lolpop16

+0

你误会了我。该SQL语句按照Kills的降序顺序要求结果。这正是你所拥有的。这正是你所要求的。 –

回答

0

在您的代码似乎想要选择0行偏移10.然后使用限制10仅获得第10行

SELECT Name, Kills FROM userdata ORDER BY Kills DESC LIMIT 10; 

删除也是无用的()