Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/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 - Fatal编程技术网

如何使用相同日期的事件累积计数更新MySQL表

如何使用相同日期的事件累积计数更新MySQL表,mysql,Mysql,我有一个表格,可以从中提取数据。此数据具有日期和股票符号。可以有多行具有相同日期和不同股票符号的数据。我需要更新该表,以便所有日期相同的行都有一个运行总数。当新日期出现时,累积计数重新设置为1,然后继续 一个典型的查询: mysql> SELECT Sym 'sym' , fdate as 'FilledDate', TsTradeNum 'numT' -> FROM trades_entered_b2 -> WHERE fDate >= '2009-08-03' A

我有一个表格,可以从中提取数据。此数据具有日期和股票符号。可以有多行具有相同日期和不同股票符号的数据。我需要更新该表,以便所有日期相同的行都有一个运行总数。当新日期出现时,累积计数重新设置为1,然后继续

一个典型的查询:

mysql> SELECT Sym 'sym' ,  fdate as 'FilledDate',  TsTradeNum 'numT'
-> FROM trades_entered_b2
-> WHERE fDate >= '2009-08-03' AND fDate <= '2009-08-07'
-> LIMIT 10;


+------+------------+------+
| sym  | FilledDate | numT |
+------+------------+------+
| WAT   | 2009-08-03 |    0 |
| ALGN  | 2009-08-04 |    0 |
| POT   | 2009-08-05 |    0 |
| PTR   | 2009-08-06 |    0 |
| SCHW  | 2009-08-06 |    0 |
| FDO   | 2009-08-07 |    0 |
| NBL   | 2009-08-07 |    0 |
| RRC   | 2009-08-07 |    0 |
| WAT   | 2009-08-08 |    0 |
| COCO  | 2009-08-08 |    0 |
+------+------------+------+
我需要做的是用正确的值更新TsTradeNum列。我试图创建一个函数,但各种查询都失败了


有什么想法吗?提前感谢

可以在下面尝试。如果前一行日期与当前行日期相同,则查询将numT增加1,否则将numT重置为1

SELECT sym, FilledDate, numT  
FROM(
SELECT sym, FilledDate,
   @count:=CASE WHEN ( @date <> FilledDate) THEN 1 
                ELSE 
                    @count+1                     
                END AS numT,
    @date:=FilledDate as dlset        
FROM
(SELECT @count:= -1) s,
(SELECT @date:= -1) d,    
  (SELECT id, sym, FilledDate
   FROM mytable3  
   ORDER BY FilledDate,sym desc        
  ) t ) a 

你能更详细地解释一下你想做什么吗?似乎您正在尝试为每天的每一行分配某种序列号。您是在填充表之后,还是在首次将行插入表时尝试执行此操作?另外,请记住,表中的行没有任何隐式顺序。如果您是在事后执行此操作,您如何知道哪一行获得哪一numT值?您不能使用每天重置的自动递增插入触发器吗?不然的话,这看起来和我事后做的很相似。我试图做的是连续计算某个事件在同一日期发生的次数。此处:从交易输入,其中tfamt=3,tsamt 0
SELECT sym, FilledDate, numT  
FROM(
SELECT sym, FilledDate,
   @count:=CASE WHEN ( @date <> FilledDate) THEN 1 
                ELSE 
                    @count+1                     
                END AS numT,
    @date:=FilledDate as dlset        
FROM
(SELECT @count:= -1) s,
(SELECT @date:= -1) d,    
  (SELECT id, sym, FilledDate
   FROM mytable3  
   ORDER BY FilledDate,sym desc        
  ) t ) a