Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql每天有限计数_Mysql_Date_Count_Limit - Fatal编程技术网

mysql每天有限计数

mysql每天有限计数,mysql,date,count,limit,Mysql,Date,Count,Limit,我想为每个日期选择前3行*注意2月5日有4行,我在想它是否可以计数或限制,但没有任何运气。 我一直在寻找解决办法,但没有任何运气。大多数情况下,我真的很想知道它是否能够使用MySQL,或者我是否需要在PHP中执行一些日期检查,以从结果中删除不需要的行 我的实际目标是: user_id | date_time | journal_id 1 | 2014-02-04 11:15:00 | 21 1 | 2014-02-04 11:25:00 |

我想为每个日期选择前3行*注意2月5日有4行,我在想它是否可以计数或限制,但没有任何运气。 我一直在寻找解决办法,但没有任何运气。大多数情况下,我真的很想知道它是否能够使用MySQL,或者我是否需要在PHP中执行一些日期检查,以从结果中删除不需要的行

我的实际目标是:

user_id |       date_time     | journal_id
   1   | 2014-02-04 11:15:00 |     21
   1   | 2014-02-04 11:25:00 |     22
   1   | 2014-02-04 14:00:00 |     31
   1   | 2014-02-05 10:15:00 |     33
   1   | 2014-02-05 12:55:00 |     45
   1   | 2014-02-05 15:15:00 |     48
   1   | 2014-02-05 15:35:00 |     49
   1   | 2014-02-06 05:00:00 |     62
   1   | 2014-02-06 13:40:00 |     67
   1   | 2014-02-06 15:00:00 |     72
有什么想法吗?

工作解决方案:

user_id |       date_time     | journal_id
   1   | 2014-02-04 11:15:00 |     21
   1   | 2014-02-04 11:25:00 |     22
   1   | 2014-02-04 14:00:00 |     31
   1   | 2014-02-05 10:15:00 |     33
   1   | 2014-02-05 12:55:00 |     45
   1   | 2014-02-05 15:15:00 |     48
   1   | 2014-02-06 05:00:00 |     62
   1   | 2014-02-06 13:40:00 |     67
   1   | 2014-02-06 15:00:00 |     72

您可能想尝试以下方法

创建一个存储过程,其中光标是日期 从具有限制的表中选择行,并将这些结果复制到新表中 举一个我将如何做到这一点的例子:

创建过程在TABLENAME VARCHAR50中显示第一行 声明varsqlvarchar255; 声明varDATE VARCHAR100; 在默认值0中声明没有更多行; 声明游标1游标,用于从日志中选择不同的日期\时间; 为未找到的集合声明继续处理程序no_more_rows=1; 打开游标1; 将cursor1提取到varDATE中; 重复 将@varSQL=CONCATINSERT设置为newTable SELECT*FROM logs,其中DATEdate\u time=,varDATE,LIMIT 0,3; 从@varSQL准备stmt; 执行stmt; 将cursor1提取到varDIR中; 直到没有更多行=1结束重复; 关闭游标1;
结束

如果我理解正确,您希望显示该表中的前四行……是的。它可以通过MySQL实现。这个问题的解决方案在这里和其他地方都得到了广泛的讨论。毫无疑问,有人会在一分钟内提供另一行。@jmail:我想要9行,每天的前3行。
user_id |       date_time     | journal_id
   1   | 2014-02-04 11:15:00 |     21
   1   | 2014-02-04 11:25:00 |     22
   1   | 2014-02-04 14:00:00 |     31
   1   | 2014-02-05 10:15:00 |     33
   1   | 2014-02-05 12:55:00 |     45
   1   | 2014-02-05 15:15:00 |     48
   1   | 2014-02-06 05:00:00 |     62
   1   | 2014-02-06 13:40:00 |     67
   1   | 2014-02-06 15:00:00 |     72
select user_id, date_time, journal_id from (
  select 
    user_id, date_time, journal_id
    , @crid:=
      (case when @pdt=(@cdt:=date_format(date_time, '%Y-%m-%d')) 
                 then (@crid+1) 
                 else (@pdt:=@cdt)/@pdt 
       end) as grouped_row_num
  from logs, ( select @crid:=0, @cdt:=0, @pdt:=0 ) r
) results
where grouped_row_num <= 3
;