我試圖在MySQL Workbench的表中添加第new_id
列,但我希望這個new_id
是GROUP BY old_id
。MySQL:如何將新的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,你可能必須爲它編寫一個自定義函數。 – serakfalcon