sequence
数値を格納するためのデータベーステーブルを作成するのは簡単です。sequence
ただし、この設計は、がすべてのユーザーで共有されるイベントに適しています。私が欲しいのは、ユーザーのグループsequence
ごとに作成することです。これはデータベーステーブルであるため、いつでも拡張できます。つまり、管理者はいつでもグループを作成でき、ユーザーは特定のグループに割り当てられます。では、グループに従って生成を実装するにはどうすればよいでしょうか。group
sequence
質問する
214 次
1 に答える
4
myisamを使用している場合
http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
以下は上記のリンクから抜粋したものです。
MyISAMおよびBDBテーブルの場合、複数列インデックスの2次列にAUTO_INCREMENTを指定できます。この場合、AUTO_INCREMENT列の生成値は、MAX(auto_increment_column)+ 1 WHERE prefix=given-prefixとして計算されます。これは、データを順序付けられたグループに入れたい場合に役立ちます。
CREATE TABLE animals (
grp ENUM('fish','mammal','bird') NOT NULL,
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (grp,id)
) ENGINE=MyISAM;
INSERT INTO animals (grp,name) VALUES
('mammal','dog'),('mammal','cat'),
('bird','penguin'),('fish','lax'),('mammal','whale'),
('bird','ostrich');
SELECT * FROM animals ORDER BY grp,id;
Which returns:
+--------+----+---------+
| grp | id | name |
+--------+----+---------+
| fish | 1 | lax |
| mammal | 1 | dog |
| mammal | 2 | cat |
| mammal | 3 | whale |
| bird | 1 | penguin |
| bird | 2 | ostrich |
+--------+----+---------+
あなたの場合:
CREATE TABLE mytable (
user_id MEDIUMINT NOT NULL AUTO_INCREMENT,
group_id MEDIUMINT NOT NULL,
user_name CHAR(30) NOT NULL,
PRIMARY KEY (group_id,user_id)
) ENGINE=MyISAM;
INSERT INTO mytable (group_id, user_name) VALUES
(1,'alex'),(1,'jenny'),(2,'baz'),(1,'tim'),(2,'danny'),(3,'joe');
SELECT * FROM mytable ORDER BY group_id,user_id;
戻り値:
user_id group_id user_name
1 1 alex
2 1 jenny
3 1 tim
1 2 baz
2 2 danny
1 3 joe
于 2012-07-13T08:12:54.193 に答える