MySQL 中按群組自動遞增
MySQL 提供了一種基於分組列自動遞增欄位值的便利方法。這在需要對每組內的記錄進行分組和編號的場景中特別有用。
對於 MyISAM 和 BDB 表
對於 MyISAM 和 BDB 表,自動遞增可以定義為次要關鍵部分。例如,考慮以下表格結構:
CREATE TABLE foo ( id INT AUTO_INCREMENT NOT NULL, group_field INT NOT NULL, name VARCHAR(128), PRIMARY KEY(group_field, id) );
在此結構中,id 欄位定義為自增,但它與 group_field 一起也是主鍵的一部分。根據MySQL 文件:
In this case, the generated value for the AUTO_INCREMENT column is calculated as MAX(auto_increment_column) + 1 WHERE prefix=given-prefix. This is useful when you want to put data into ordered groups.
範例
使用上面建立的foo 表,讓我們插入一些範例資料:
INSERT INTO foo (group_field, name) VALUES (1, 'test'), (1, 'test2'), (2, 'test3'), (2, 'test4'), (3, 'test5'), (3, 'test6');
插入資料後,foo 表的內容將如下所示:
+----+-----------+------+ | id | group_field | name | +----+-----------+------+ | 1 | 1 | test | | 2 | 1 | test2 | | 3 | 2 | test3 | | 4 | 2 | test4 | | 5 | 3 | test5 | | 6 | 3 | test6 | +----+-----------+------+
如您所見,每個群組中的id 欄位已根據group_field 值自動遞增。
以上是MySQL如何實作分組自增?的詳細內容。更多資訊請關注PHP中文網其他相關文章!