我正在尝试执行“选择分组最大值”之类的操作,但我正在寻找分组订单号。
所以有了这样的表
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 重置变量。
最佳答案
这将为您提供具有此 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)
关于mysql按组选择订单号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5457010/