【发布时间】:2017-11-26 11:32:55
【问题描述】:
我正在尝试将列 new_id 添加到 MySQL Workbench 中的表中,但我希望将此 new_id 分组为 old_id。
我尝试了下面的代码。 new_id 是自动增加的,但不是按old_id 分组的。
ALTER TABLE candidate
ADD COLUMN new_id int not null auto_increment UNIQUE FIRST,
ADD PRIMARY KEY(old_id, new_id);
以下是我得到的:
+----------+--------+
| old_id | new_id |
+----------+--------+
| 00132004 | 1 |
| 00132004 | 2 |
| 00132004 | 3 |
| 00132004 | 4 |
| 00118685 | 5 |
| 00118685 | 6 |
| J99999 | 7 |
| J99999 | 8 |
| J99988 | 9 |
| J99987 | 10 |
+----------+--------+
但这是我想要得到的:
+----------+--------+
| old_id | new_id |
+----------+--------+
| 00132004 | 1 |
| 00132004 | 1 |
| 00132004 | 1 |
| 00132004 | 1 |
| 00118685 | 2 |
| 00118685 | 2 |
| J99999 | 3 |
| J99999 | 3 |
| J99988 | 4 |
| J99987 | 5 |
+----------+--------+
我在这里错过了什么......? 谢谢!!!
【问题讨论】:
-
自动增量列将为每条新记录生成一个新值。它不会(也不应该)生成与不同行中的值重复的值。如果您真的需要这样的东西,您将必须创建一个插入前触发器并计算要放入列中的值。
-
每行自动递增。你无法改变这一点。如果您想要一个自动递增的非唯一 id,您可能必须为它编写一个自定义函数。
标签: mysql group-by auto-increment alter-table