将auto_increment值设置为每个唯一组

时间:2013-12-20 11:58:18

标签: mysql group-by auto-increment

我有一个带有

的MySQL innodb table (sqlfiddle demo)
  

idname_idnamecontent

内容如

1, NULL, 'Brian', 'Bridge to terabithia'
2, NULL, 'Brian', 'Pulp fiction'
3, NULL, 'Brian', 'Trainspotting'
4, NULL, 'Luke', 'Watchmen'
5, NULL, 'Luke', 'Constantine'
6, NULL, 'Tony', 'Dark knight'
7, NULL, 'Tony', 'Shutter Island'
8, NULL, 'John', 'Machinist'
9, NULL, 'John', 'Matrix'
10, NULL, 'John', 'Sin city'
11, NULL, 'John', 'Mad Max'

id对每一行都是唯一的。但我无法得到,如何为每个唯一名称设置auto_increment name_id

Here's (sqlfiddle)我正在努力实现的目标。

1, 1, 'Brian', 'Bridge to terabithia'
2, 1, 'Brian', 'Pulp fiction'
3, 1, 'Brian', 'Trainspotting'
4, 2, 'Luke', 'Watchmen'
5, 2, 'Luke', 'Constantine'
6, 3, 'Tony', 'Dark knight'
7, 3, 'Tony', 'Shutter Island'
8, 4, 'John', 'Machinist'
9, 4, 'John', 'Matrix'
10, 4, 'John', 'Sin city'
11, 4, 'John', 'Mad Max'

是否可以只使用MySQL? 谢谢你的阅读。

1 个答案:

答案 0 :(得分:4)

简短的回答是,您不能仅使用auto_increment自动执行此操作,您可能也不应该这样做。

如果真的有理由这样做,那么最好规范化数据库,创建“名称”表(name_id PK,名称)并从该表中删除“name”列。老实说,我不确定在你的例子中你可以从中获得什么,但我想这可能是问题的抽象。