Mysql 如何根据时间戳查询每条记录的索引

Mysql 如何根据时间戳查询每条记录的索引,mysql,sql,Mysql,Sql,我有一个订单表,我想索引每个公司的第一第二第三。。。等命令 表格示例: |---------------------|--------------------------| | company_id | created_at | |---------------------|--------------------------| | 1 | 2019-01-01 01:00:00 | |---------

我有一个订单表,我想索引每个公司的第一第二第三。。。等命令

表格示例:

|---------------------|--------------------------|
|      company_id     |     created_at           |
|---------------------|--------------------------|
|          1          |   2019-01-01 01:00:00    |
|---------------------|--------------------------|
|          1          |   2019-02-01 01:00:00    |
|---------------------|--------------------------|
|          2          |   2019-03-01 02:00:00    |
|---------------------|--------------------------|
|          3          |   2019-03-01 08:30:00    |
|---------------------|--------------------------|
|          2          |   2019-03-01 10:00:00    |
|---------------------|--------------------------|
我最后会这样问。但我不知道如何。。。。。我继续对字段进行计数和分组,但似乎无法根据时间戳得到每行的总和

|---------------------|--------------------------|-------|
|      company_id     |     created_at           |count()|
|---------------------|--------------------------|--------
|          1          |   2019-01-01 01:00:00    |   1   |
|---------------------|--------------------------|--------
|          1          |   2019-02-01 01:00:00    |   2   |
|---------------------|--------------------------|--------
|          2          |   2019-03-01 02:00:00    |   1   |
|---------------------|--------------------------|--------
|          3          |   2019-03-01 08:30:00    |   1   |
|---------------------|--------------------------|--------
|          2          |   2019-03-01 10:00:00    |   2   |
|---------------------|--------------------------|--------

我最终的解决方案如下,这似乎比上面的建议更简单

SELECT company_id
,(
    SELECT count(*) + 1
    FROM ORDERS AS orderCount
    WHERE orderCount.company_id = orders.company_id
        AND orderCount.created_at < orders.created_at
    ) AS order_count
FROM ORDERS
ORDER BY created_at

我最终的解决方案如下,这似乎比上面的建议更简单

SELECT company_id
,(
    SELECT count(*) + 1
    FROM ORDERS AS orderCount
    WHERE orderCount.company_id = orders.company_id
        AND orderCount.created_at < orders.created_at
    ) AS order_count
FROM ORDERS
ORDER BY created_at

@row_number实际如何工作的可能重复?我不熟悉在sqlNapmi中使用@:您正在初始化一个变量@row\u number,用0开始计算公司id。只需说:您对同一问题的答案查询将花费更多时间。我相信您在耗时部分的看法是正确的。随着我的订单表越来越大,我会被我的查询搞砸的。@row\u number实际上是如何工作的?我不熟悉在sqlNapmi中使用@:您正在初始化一个变量@row\u number,用0开始计算公司id。只需说:您对同一问题的答案查询将花费更多时间。我相信您在耗时部分的看法是正确的。随着我的订单表越来越大,我会被我的查询搞砸。