mysql - 将每天递增的数字添加到表中

标签 mysql

我有一个带有日期戳的交易表。我想添加一列来对记录进行编号,但它们必须每天重新启动。这可能吗?

示例:

+------------------+--------------+
| Date             | Data         |
+------------------+--------------+
| 19-10-2017 10:18 | Transaction1 |
| 19-10-2017 12:18 | Transaction2 |
| 19-10-2017 13:23 | Transaction3 |
| 20-10-2017 11:18 | Transaction4 |
| 20-10-2017 14:18 | Transaction5 |
| 21-10-2017 09:18 | Transaction6 |
| 21-10-2017 10:18 | Transaction7 |
| 21-10-2017 11:18 | Transaction8 |
| 21-10-2017 12:18 | Transaction9 |
+------------------+---------+----+

我想要这个:

+------+------------------+--------------+
| Nr   | Date             | Data         |
+------+------------------+--------------+
|    1 | 19-10-2017 10:18 | Transaction1 |
|    2 | 19-10-2017 12:18 | Transaction2 |
|    3 | 19-10-2017 13:23 | Transaction3 |
|    1 | 20-10-2017 11:18 | Transaction4 |
|    2 | 20-10-2017 14:18 | Transaction5 |
|    1 | 21-10-2017 09:18 | Transaction6 |
|    2 | 21-10-2017 10:18 | Transaction7 |
|    3 | 21-10-2017 11:18 | Transaction8 |
|    4 | 21-10-2017 12:18 | Transaction9 |
+------+------------------+--------------+

最佳答案

您可以尝试以下解决方案:

SELECT 
    @row_number:=CASE WHEN DATE(@date_value)=DATE(`Date`) THEN @row_number + 1 ELSE 1 END AS row_number,
    @date_value:=`Date` AS `Date`
FROM test, (SELECT @row_number:=0, @date_value:=DATE(NULL)) AS t
ORDER BY `Date`, row_number

关于mysql - 将每天递增的数字添加到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46988647/

相关文章:

php - Doctrine2 order by count many to many with many left join

mysql - 为什么我的 Perl CGI 提示 "Can' tlocate Mysql.pm”?

php - 在 PHP 应用程序中取消待处理的 AJAX 请求?

mysql - 在 Windows 的 my.ini 中更改 MySQL 5.0 的 tmp 文件夹

mysql - 统计 SQL 中来自 XML 的子标签的数量

python - mysql 中的正则表达式解析存储

php - 使用 mysql laravel 5 转换时间

mysql - 将求和字段添加到选择查询

mysql - 从模式重新创建 mysql 数据库

mysql - 如何根据另一个表中指定的关系从一个表中获取值?