【问题标题】:Divide MySQL SELECT all into sections of 7 results and run new query on each section将 MySQL SELECT all 分成 7 个结果的部分,并在每个部分上运行新查询
【发布时间】:2013-08-24 20:18:17
【问题描述】:

我想通过将结果数除以 7 来将 MySQL 查询的结果分组,这样我就可以对每个组运行查询。

我有一个表格,其中包含用户在一段时间内输入的条目。我打算计算时间段是多少天,将其除以 7,所以我有几周,然后每周运行一个查询。例如,在第 1 周输入了多少特定值,然后在第 2 周等。

时间段每次都会不同。

【问题讨论】:

  • 你可以使用limit 7来限制结果;限制 7、8;等等,或者您可以使用 Group by 声明,但如果没有更多信息,我无法帮助您。提示使用模数运算符 % 来计算极限数。
  • 一切皆有可能。
  • 在不知道自己想要实现什么的情况下,不可能给出有意义的答案。您到底想对 7 人组做什么?为什么是 7 而不是 8?这可能仅在 sql 中就可以实现,具体取决于您所寻求的内容,但根据提供的最少信息,目前最好的方法是提取您的第一个查询结果,然后在 PHP 中处理分块和附加逻辑。
  • @RobertSeddon-Smith 我已经编辑了我的问题,所以你知道 7 的相关性是什么。我打算使用 php 来获取每周的查询数,存储在一个变量中,然后在 MySQL 查询中使用,但这是我的逻辑所得到的

标签: php mysql sql


【解决方案1】:

一种方法是为每一行分配一个行号,计算最大行数,然后将其除以 7 并为每一行分配一个组号(从 1 到 7 )。
然后将查询结果保存到临时表中,并在该表中查询所需的组号:

CREATE TEMPORARY TABLE results AS
SELECT ceil( rn / (  @rn/7 )) group_nbr,
       x.*
FROM ( 
   select (@rn:=@rn+1) rn, abc.* 
   from table_name abc, (select @rn:=0) rn
) x;


SELECT *
FROM results
WHERE group_nbr = 4; 

SQLFiddle demo

【讨论】:

    猜你喜欢
    • 2011-01-10
    • 2012-11-29
    • 2017-11-29
    • 2013-05-06
    • 1970-01-01
    • 2013-11-04
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多