如何使用MySQL

时间:2018-03-21 10:10:05

标签: mysql

我编写了以下查询以获取代码字段等于最后一个代码字段的次数。与此同时,我是MySQL中这种语法(使用变量)的完全新手。

    select
          @lastCode:= ts.code as lastCode,
    @count:= 0 as count,
          ts.id,
          ts.date,
          ts.code, 
if( @lastShiftCode = ts.shift_code, @count := @count + 1,  @count:= 0) as occurences 

       from
          empCodes ts
       WHERE
       ts.date between '2018-01-01' and '2018-02-01' 
       order by
          ts.id,
          ts.date

查询运行,但计数从不会从0更改,并且事件都不会从1更改。我预计每次出现的次数会增加一次。

这是输出的一部分

lastCode    count   id  date        code occurrences
XX1         0       2   01/02/2018  XX1  1
XX1         0       2   02/02/2018  XX1  1
XX1         0       2   05/02/2018  XX1  1
XX1         0       2   06/02/2018  XX1  1
XX1         0       2   07/02/2018  XX1  1
XX1         0       2   08/02/2018  XX1  1
XX1         0       2   09/02/2018  XX1  1

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT ts.id, ts.date, SUM(ts.lastCode=ts.code) `count`
FROM empCodes ts
WHERE ts.date BETWEEN STR_TO_DATE('2018-01-01','%Y-%m-%d')
      AND STR_TO_DATE('2018-02-01','%Y-%m-%d') 
GROUP BY  ts.id, ts.date;