mysql按组选择ordernumber

时间:2011-03-28 09:28:08

标签: mysql select

我正在尝试做'select groupwise maximum'之类的事情,但我正在寻找分组订单号。

所以用这样的表

briefs
----------
id_brief | id_case | date
1        | 1       | 06/07/2010
2        | 1       | 04/07/2010
3        | 1       | 03/07/2010
4        | 2       | 18/05/2010
5        | 2       | 17/05/2010
6        | 2       | 19/05/2010

我想要一个像这样的结果

breifs result
----------
id_brief | id_case | dateOrder
1        | 1       | 3
2        | 1       | 2
3        | 1       | 1
4        | 2       | 2
5        | 2       | 1
6        | 2       | 3

我想我想做类似MySQL - Get row number on select所描述的内容,但我不知道如何为每个id_case重置变量。

1 个答案:

答案 0 :(得分:2)

这将为您提供此id_case值以及小于或等于此date值的日期的记录数。

SELECT t1.id_brief,
    t1.id_case,
    COUNT(t2.*) AS dateOrder
FROM yourtable AS t1
    LEFT JOIN yourtable AS t2 ON t2.id_case = t1.id_case AND t2.date <= t1.date
GROUP BY t1.id_brief

Mysql允许使用GROUP BY进行查询的列。使用更严格的DBMS,您可能需要GROUP BY t1.id_brief, t1.id_case

强烈建议您在桌面上使用正确的索引

CREATE INDEX filter1 ON yourtabl (id_case, date)