ホームページ >データベース >mysql チュートリアル >MySQL でグループごとの自動インクリメントを実装するにはどうすればよいですか?
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 中国語 Web サイトの他の関連記事を参照してください。