mysql按组选择订单号

标签 mysql select

我正在尝试执行“选择分组最大值”之类的操作,但我正在寻找分组订单号。

所以有了这样的表

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/

相关文章:

mysql - 如果我执行 mysql <dbname>> filename.sql 会发生什么

mysql加入csv字段?

mysql - SQL选择基于多行键的两部分组合键的一半?

python - 如何在新数据框中存储多索引数据框的子集?

select - 选择后触发

带有 CONCAT 条件的 MySQL 选择

html - 使用 CSS 将无序列表呈现为 <select>

MySql 从不同的表中获取匹配的名字

javascript - 网站自动获取消息到 php 聊天应用程序不工作

php - 使用 JSON 和 PHP 更新 MySQL 数据库