|
|
|
| Есть такой запрос
INSERT INTO necessary_details (name,model) VALUES ('2','1'), ('2','2')
так вот появилась необходимость проверки этих данных прежде чем добавить если уже такие в таблице или нет, чтобы не было дубляжа. | |
|
|
|
|
|
|
|
для: technic611
(22.11.2013 в 13:48)
| | для исключения дубляжей можно использовать уникальный индекс на поле (либо несколько полей)
если этого мало, то
http://softtime.ru/forum/read.php?id_forum=3&id_theme=57631 | |
|
|
|
|
|
|
|
для: Valick
(22.11.2013 в 15:07)
| | Вы предлагаете использовать INSERT IGNORE IN ???? | |
|
|
|
|
|
|
|
для: technic611
(23.11.2013 в 01:17)
| | ну для чего то его придумали разработчики MySQL
да и этот вариант гораздо проще | |
|
|
|
|
|
|
|
для: Valick
(23.11.2013 в 20:00)
| | не работает у меня такая конструкция. Люди, помогите убрать дубляжи | |
|
|
|
|
|
|
|
для: technic611
(23.11.2013 в 23:05)
| | Вы, вероятно, не поняли смысл ключевого слова IGNORE.
Оно не предотвращает вставку строк. Оно предотвращает вывод ошибок.
А какие могут быть ошибки при вставке? Например - дублирование уникального ключа.
Т.е. если у вас существует уникальный ключ по какому-то полю или нескольким полям, при попытке вставить дубль возникнет ошибка и строка не будет вставлена.
А чтобы подавить вывод ошибки и применяется ключевое слово IGNORE.
Т.е. для решения вашей задачи нужно 2 условия: уникальный ключ по двум полям и IGNORE в запросе.
Для добавления уникального ключа, выполните такой запрос:
ALTER TABLE `necessary_details` ADD UNIQUE (`name`, `model`);
|
И запрос на вставку должен выглядеть таким образом:
INSERT IGNORE INTO necessary_details (name,model) VALUES ('2','1'), ('2','2');
|
| |
|
|
|
|
|
|
|
для: Sfinks
(25.11.2013 в 09:35)
| | да работает все отлично,только это не совсем то. нужно чтобы записи не добавлялись по двум совпадением и из поля name и model, а так получается что одно совпадение и в базу не добавляется запрос, а мне нужно чтоб по двум | |
|
|
|
|
|
|
|
для: technic611
(12.12.2013 в 15:38)
| | Значит вы что-то сделали не так.
Придется читать предыдущий пост снова и снова до полного просветления.
Там все написано. И все правильно. Т.е. из последнего кода добавлены будут обе строки. | |
|
|
|
|
|
|
|
для: Sfinks
(13.12.2013 в 08:12)
| | да, строки добавились, если я хочу например поменять просто name, то строка не добавляется уже, т.к. есть уникальное значение. а мне нужно чтобы добавлялась. Т.е. нужно как-то игнорировать наличие одного уникального поля и добавлять запись, А если есть два совпадения то не добавлять | |
|
|
|
|
|
|
|
для: technic611
(13.12.2013 в 12:38)
| | Во первых, покажите вывод запроса:
SHOW CREATE TABLE necessary_details
|
Во вторых, "поменять" - это UPDATE, а добавить - это INSERT. Поэтому....
> если я хочу например поменять просто name, то строка не добавляется уже
а) покажите пример как вы что добавляете.
б) покажите состояние тавлицы в районе совпадающих строк перед запросом.
P.S. Это все не прихоть. Все пункты обязательны к выполнению. | |
|
|
|
|
 85.2 Кб |
|
|
для: Sfinks
(13.12.2013 в 23:00)
| | мне нужно чтобы не добавлялись уже существующие name и model для каждого id. а как вы подсказали не хочет вообще добавляться даже одно из значений name или model | |
|
|
|
|
|
|
|
для: technic611
(15.12.2013 в 00:01)
| | кто нибудь помогите. Может быть сначала добавлять все записи и сразу удалять дубляжи, но мне кажется это долго будет | |
|
|
|
|
|
|
|
для: technic611
(16.12.2013 в 22:32)
| | Я вам написал что от вас требуется, чтобы получить помощь.
Вы проигнорировали.
Мне гадать надоело.
Остальным, похоже, и начинать не охото. | |
|
|
|