ID AUTO_INCREMENT как подружить ON DUPLICATE KEY UPDATE?

Bel.site

Создатель
Регистрация
23 Апр 2015
Сообщения
42
Реакции
7
Добрый день друзья, помогите решить задачку.
Имею таблицу, где
ID AUTO_INCREMENT
Что нужно вставить в код где id=id <- вот сюда значение
Чтоб если только по названию искало и заменяло или добавляло в базе? Череп сейчас лопнет, не могу вкурить.
Таблица:
Код:
CREATE TABLE `s_products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`url` varchar(255) NOT NULL DEFAULT '',
`brand_id` int(11) DEFAULT NULL,
`name` varchar(500) NOT NULL,
`annotation` text NOT NULL,
`body` longtext NOT NULL,
`visible` tinyint(1) NOT NULL DEFAULT '1',
`position` int(11) NOT NULL DEFAULT '0',
`meta_title` varchar(500) NOT NULL,
`meta_keywords` varchar(500) NOT NULL,
`meta_description` varchar(500) NOT NULL,
`created` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
`featured` tinyint(1) DEFAULT NULL,
`external_id` varchar(36) NOT NULL,
`rating` float(3,1) DEFAULT '0.0',
`votes` int(11) DEFAULT '0',
`special` varchar(255) DEFAULT NULL,
`last_modify` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `url` (`url`),
KEY `brand_id` (`brand_id`),
KEY `visible` (`visible`),
KEY `position` (`position`),
KEY `external_id` (`external_id`),
KEY `hit` (`featured`),
KEY `name` (`name`(333)),
KEY `name_2` (`name`(333))
) ENGINE=MyISAM AUTO_INCREMENT=370 DEFAULT CHARSET=utf8
5a8f415542ed4891302997.png


Сам запрос
Код:
INSERT INTO s_products SET id=id, name="%Название%" ON DUPLICATE KEY UPDATE name=VALUES(`name`);



не силён в mysql, но какие поля не сравнивал, если данные одинаковые и нету ID, то всегда новое. А если принудительно сделать id определённой цифрой, то тогда заменяет информацию товара этого, либо ничего не делает если одинакого.
Вот такое кидал, нету id, всегда новое, как id принудительно сделаю цифрой то работает всё.
Код:
INSERT INTO s_products (url,name,brand_id,meta_title,meta_keywords,meta_description) VALUES
((SELECT MAX(product_id) FROM s_lang_products),'%Название%','0','%Название%','%Название%','%Название%')
ON DUPLICATE KEY UPDATE name=VALUES(`name`);
 

pautina

Постоялец
Регистрация
15 Фев 2010
Сообщения
108
Реакции
37
ID AUTO_INCREMENT
Что нужно вставить в код где id=id <- вот сюда значение
Ничего вставлять не нужно. При выполнении запроса, id будет автоматические сгенерирован и вставлен, потому-что AUTO_INCREMENT.
А для того, чтобы узнать последний вставленный id - нужно после запроса INSERT - выполнить запрос - так получите последний автоматически вставленный id
 
Сверху