mysql - 在mysql中生成自动递增的序列号

标签 mysql

我曾尝试生成一个序列号,以确定事件是否被重新安排(重新安排的次数),但得到了错误的输出。

在下图中,第 5 行是正确的,但是当涉及新事件时,它应该再次从“重新安排 1”开始。 在此查询..

SELECT  concat('Reschedule ',@a:=@a+1) Reschedule_type, 
        activity, old_date,new_date
FROM    application_calender_reschedule_view
    , (SELECT @a:= 0) as a; 

我该怎么做...?

请查找以下快照以供引用。
http://i.stack.imgur.com/ynpwt.png

最佳答案

您需要将先前的事件存储在变量中并按事件排序,以便保证所有事件都在一起:

SELECT  concat('Reschedule ', if(@activity = activity, @a:=@a+1, @a := 1)
              ) as Reschedule_type, 
        activity, old_date, new_date,
        @activity := activity
FROM    application_calender_reschedule_view cross join
        (SELECT @a:= 0, @activity := '') as a
ORDER BY activity, old_date

关于mysql - 在mysql中生成自动递增的序列号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22803875/

相关文章:

mysql - 有没有办法让mysql选择varchar类型作为日期?

mysql - 在 MySQL 中同时运行多个创建触发器

mysql - 我应该对已经属于多字段索引一部分的字段建立索引吗?

mysql - 从mysql数据库获取最小值和最大值之间的所有数字

mysql - MS Access 多重连接查询

mysql - mysql中对出现的计数

php - 使用 jqGrid 制作考勤表

mysql - 数据库同步服务器到本地

mysql - 为什么在 vb 中替换 datagridview 值时会出错?

MySQL 缓存准备好的语句以提高性能