WRT:how to insert records for top 10 enteries only
这是更精确的问题。
我收集了前十名用户的特定任务。使用下面给出的查询。
mysql_query("SELECT `userid`, SUM(`points`) as `total` FROM
`tablename` GROUP BY `userid` ORDER BY total DESC LIMIT 10");
现在,我需要向前三名收集的用户颁发奖金,其中包括这些选定的前10名。我不知道如何为此目的编写查询。
前3名的前3名奖金不同
1:第一位用户得到1000分
2:第二位用户获得500分
3:第3位用户获得100分
我需要更新tablename = user,field name = points。
中的一个字段要使用以下查询更新奖金(一般查询):
$Db1->query('UPDATE user SET points=points+'.$rate.'
WHERE userid = '.$credituser);
我希望按照社区标准详细阐述这个问题。
请指导。
答案 0 :(得分:0)
使用纯MySQL版本。
当你标记PHP时,我会将其纳入我的答案:)
(Ps:不要使用mysql_*
。由于OP使用mysql_*
,我的回答将会是
$objGet = mysql_query("SELECT `userid`, SUM(`points`) as `total` FROM
`tablename` GROUP BY `userid` ORDER BY total DESC LIMIT 10");
if( mysql_num_rows($objGet) ) {
$intIteration = 1;
while( $arrResults = mysql_fetch_assoc($objGet) ) {
switch($intIteration) {
case 1 :
mysql_query("UPDATE tablename SET points = points + 1000 WHERE userid = ". $arrResults['userid']);
break;
case 2 :
mysql_query("UPDATE tablename SET points = points + 500 WHERE userid = ". $arrResults['userid']);
break;
case 3 :
mysql_query("UPDATE tablename SET points = points + 100 WHERE userid = ". $arrResults['userid']);
break;
default:
//No idea.
//Not in the top 3.
break;
}
$intIteration++;
}
} else {
//No users.
}