我有一个表,例如每个组包含五行。每个组中的每一行都拥有该组别唯一的date
值。当数值发生变化时,MySQL增加用户变量
我想在我的查询中执行的操作是遍历表,并在此date
值更改时递增用户变量(@count)。也就是说,@count应该等于组数,而不是行数。
我当前的查询看起来是这样的,如果你想知道:
SELECT @row := @row +1 AS rownum, date
FROM (SELECT @row := 0) r, stats
非常感谢。
我有一个表,例如每个组包含五行。每个组中的每一行都拥有该组别唯一的date
值。当数值发生变化时,MySQL增加用户变量
我想在我的查询中执行的操作是遍历表,并在此date
值更改时递增用户变量(@count)。也就是说,@count应该等于组数,而不是行数。
我当前的查询看起来是这样的,如果你想知道:
SELECT @row := @row +1 AS rownum, date
FROM (SELECT @row := 0) r, stats
非常感谢。
这样的事情呢?
SELECT
(CASE WHEN @date <> date THEN @row := @row +1 ELSE @row END) AS rownum,
@date:= date,
date
FROM (SELECT @row := 0, @date := NOW()) r, stats
这似乎是个窍门! – felamaslen 2012-08-03 22:07:50
您不需要用户变量来回答您正在执行的查询。有没有你想要使用的用户变量的理由
如果没有(例如,以模拟排名功能):
-- how many groups are there?
select count(distinct date) distinct_groups from table;
-- each group and count of rows in the group
select date, count(*) from table group by date;
-- if you want the Nth row from each group, assuming you have an auto_increment called id:
select *
from table
join (select date, max(id) id
from table
group by date
) sq
on table.id = sq.id
目标是选择每第n行,但将每个组视为一行。每行都与“服务器”值和“状态”值关联。这是一个正常运行时间图。 – felamaslen 2012-08-03 22:06:39
谢谢,这对我很有帮助,因为我正在寻找没有变量 – SeanDowney 2013-03-19 20:07:41
要知道有多少行每日期存在,只是做:选择日期,从统计组到日期计数(*) – Nathan 2012-08-03 22:04:03
是的,但我想知道如何将它集成到子查询中 – felamaslen 2012-08-03 22:10:49