MySQL - 表中的第二个序列(例如按类别)

标签 mysql increment auto-increment

我正在努力寻找最有效的方法来做某事,非常感谢您的建议!

我有一个包含以下列的表格:

id
category
category_sequence
other_columns

id 是一个自增列,也是主键。该类别由用户在 UI 上选择。

我想做的是生成一个category_sequence,它是该类别现有的最高category_sequence + 1。

例如,插入几行如下:

  • 1,1,1
  • 2,1,2
  • 3,2,1
  • 4、1、3

等等。

显然,我可以运行一个查询来提取最高的category_sequence,向其中添加一个,然后运行我的插入语句。但是有没有一种更有效的方法(一些插入将处于相当大的循环中,因此任何可以加快速度并防止交叉的方法都会很棒)。

提前致谢, 凯夫

最佳答案

你可以试试

    insert into mytable
    select "categoryselected",coalesce(max(category_sequence),0)+1 from mytable where category = "categoryselected"

如果它是该类别的第一条记录,您可能还必须将其包装在 case 语句中。我没有 mysql 来测试它

关于MySQL - 表中的第二个序列(例如按类别),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1555498/

相关文章:

python - 我如何自动分页而不是在 flask 中使用限制和偏移量

c - x += 1 是否比 x = x + 1 更有效?

sql - 复合键每组行的序列号

mysql如何格式化subtime

php - 主键从 1 到 01、2 到 02 等

php - 无法显示来自 MySQL 的 DIV 中的数据

c - 递增指针,精确序列

c++ - std::map::iterator 在增量时使程序崩溃

python - 设置 SQLAlchemy 自动增量起始值

PHP MYSQL - 不使用列名但使用自动增量字段插入