【问题标题】:how to insert records for top 10 enteries only如何仅插入前 10 个条目的记录
【发布时间】:2014-10-15 12:11:05
【问题描述】:

我已经为特定任务收集了前 10 名用户。使用下面给出的查询。

$sqlsum=mysql_query("SELECT `userid`, SUM(`points`) as `total` FROM 
    `tablename` GROUP BY `userid` ORDER BY total DESC LIMIT 10");

现在,我只需要奖励前 10 名聚集的用户。我不明白如何为此目的编写查询。

我需要更新 tablename = user , field name = bonus 中的一个字段。

请指导。

【问题讨论】:

  • 请显示您的表格格式。 . .或者至少代码看起来像添加任何“奖金”。
  • @GordonLinoff 你不明白他想说什么那么回答或否决票不是强制性的
  • @sadiqxs 。 . .在我写这篇文章时,有三个答案将奖金放入三个 不同 表中。我不是唯一一个对数据结构感到困惑的人。 OP 会很好地澄清这个问题。

标签: mysql sql


【解决方案1】:

您可以为此目的使用JOIN,例如

UPDATE `tablename` a 
JOIN 
(
SELECT `userid`, SUM(`points`) as `total` FROM 
    `tablename` GROUP BY `userid` ORDER BY total DESC LIMIT 10
) tab ON a.`userid` = tab.`userid`       
set a.Bonus = 2000

【讨论】:

    【解决方案2】:

    你可以试试:

    $query = "UPDATE user 
              SET bonus=$some_bonus 
              WHERE id IN (
              SELECT userid from (select userid,sum(points) as total 
              FROM table_name GROUP BY userid ORDER BY total DESC LIMIT 10))";
    

    这里的 id 是给用户的用户表的 id,$some_bonus 是你想要奖励给前 10 名用户的奖金。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 2018-02-08
      • 2015-10-04
      • 2016-11-23
      • 1970-01-01
      • 2011-01-24
      • 2015-07-12
      相关资源
      最近更新 更多