2

因此,这更多是对如何进行此操作的查询,当涉及到基础知识之外,我是 MySQL/PHP 编码的新手,所以我只是想知道如何设置一个自动递增的 int where if两个姓氏相同,它会计算它们。我在网上搜索时找不到任何东西,但一个例子是:

在数据库中,我们有 5 个用户

 1. james smith 1   
 2. terry smith 2
 3. john smith 3
 4. jerry fields 1
 5. tom straus 1

当这些用户注册时,我需要创建一个 int,即 john smith 是第三个具有相同姓氏的人,而 jerry fields 是第一个具有姓氏字段的人等。如何做到这一点?

我制作的表单是使用 jquery/php ajax 方法注册用户的表单,但我想添加与此类似的内容,以便将该数字与他们的姓名结合起来以创建特定的用户 ID。

4

1 回答 1

2

使用AUTO_INCREMENT中所述:

对于MyISAMBDB表,您可以AUTO_INCREMENT在多列索引中的辅助列上指定。在这种情况下,AUTO_INCREMENT列的生成值计算为。当您要将数据放入有序组时,这很有用。MAX(auto_increment_column) + 1 WHERE prefix=given-prefix

因此,您可以这样做:

CREATE TABLE my_table (
  firstname VARCHAR(31) NOT NULL,
  lastname  VARCHAR(31) NOT NULL,
  counter   BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (lastname, counter)
) Engine=MyISAM;

INSERT INTO my_table
  (firstname, lastname)
VALUES
  ('james', 'smith' ),
  ('terry', 'smith' ),
  ('john' , 'smith' ),
  ('jerry', 'fields'),
  ('tom'  , 'straus')
;

sqlfiddle上查看。

于 2013-01-14T15:24:02.787 回答