Mysql Автоинкремент int аналогичных данных

Так что это больше вопрос о том, как можно это сделать, я новичок в кодировании MySQL/PHP, когда речь идет не только об основах, поэтому мне просто интересно, как можно настроить автоматическое увеличение int, где, если две фамилии были бы одинаковыми, они бы их считали. Я не смог ничего найти на нем во время поиска в Интернете, но пример будет:

в базе данных у нас 5 пользователей

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

Когда эти пользователи регистрируются, мне нужно создать int, чтобы Джон Смит был третьим лицом с той же фамилией Смит, в то время как Джерри Полс - первый человек с полями фамилии и т. Д. Как можно это сделать?

Я создал форму, которая регистрирует пользователя с помощью jjery/php ajax-метода, но я хотел бы добавить что-то похожее на это, чтобы оно объединяло это число с их именами для создания определенного идентификатора пользователя.

1 ответ

Решение

Как описано в разделе ИспользованиеAUTO_INCREMENT:

За MyISAM а также BDB таблицы, которые вы можете указать 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')
;

Смотрите это на http://sqlfiddle.com/.

Другие вопросы по тегам