Проверка на наличие нескольких повторяющихся записей - PullRequest
0 голосов
/ 26 марта 2012

Прежде чем вставлять данные в таблицу, мне нужно проверить дубликаты записей и составить список этих записей. Запрос не должен ничего вставлять, пока есть хотя бы один дубликат.

Количество записей для вставки: ~ 1000

Строки в таблице: ~ 1.000.000

Таблица:

CREATE TABLE `test` (
  `A` varchar(19) NOT NULL,
  `B` varchar(9) NOT NULL,
  KEY `A` (`A`),
  KEY `B` (`B`)
) ENGINE=InnoDB;

Мне нужно проверить оба столбца:

Какой эффективный способ сделать это.

Заранее спасибо.

P.S. рассмотрите возможность использования php и mysql

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Скажите, что дубликат означает, что имя пользователя уже существует.поэтому вы можете попробовать:

1] использовать цикл for для группировки всех имен пользователей, которые есть в вашем списке вставок: псевдокод:

  $names="";
  for(each element){
      $names.=$val.", ";
  //remove last comma ","

Затем используйте следующую инструкцию sql, чтобы получить все повторяющиеся записи.,

  select * from myTable where username in ($names);

получив список всех ваших дубликатов, затем вставьте как

insert into myTable (username, address, otherstuff)
values("henry", "35 skid", "who knows")
ON DUPLICATE KEY UPDATE 
otherstuff = values(otherstuff);
0 голосов
/ 26 марта 2012

Один из способов сделать это - вставить все, а затем выбрать дубликаты , чтобы вывести их; и если найдены какие-либо для отката всей операции. Это было бы довольно дорого, хотя.

...