Dolbanowsky
@Dolbanowsky
Поэт-программист

MySQL — аналог ON DUPLICATE KEY (или как объединить UPDATE и INSERT)?

Итак, всё просто. Есть база данных товаров.
Есть парсер, который берет данные товара из источника, и передает их в MySQL запрос.

Данный запрос должен работать по логике:
1. Проверяем по артикулу товара есть ли такой в БД
2. Если есть UPDATE
3. Если нет INSERT

Про ON DUPLICATE KEY знаю, читал, но есть проблемы:
1. Не могу использовать ON DUPLICATE KEY так как в БД у некоторых товаров поле артикула пустое и нет возможности сделать поле с артикулом UNIQUE.
2. Учитывая пункт 1 (что у некоторых товаров не артикула), можно взять артикул из названия товара(он там есть) - но тут получается что надо использовать LIKE '%abc%', что в ON DUPLICATE KEY невозможно впихнуть никак.

Короче говоря, нужна альтернатива ON DUPLICATE KEY, что то в духе проверки по условию.
Что можно еще придумать в моем случае ? Как запихнуть в один запрос проверку по условию и затем выполнение нужного запроса силами MySQL.

TABLE
id | name | product_code | price |
1 ВАЗ 2108 (2108) 10 000
2 ВАЗ 2109 (2109) 23000
3 ВАЗ 2105 9000
4 ВАЗ 2107 (2107) 12000
5 ВАЗ 2111 (2111) 20000
  • Вопрос задан
  • 817 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Если поле действительно пустое (NULL), а не содержит пустую строку, то ON DUPLICATE сработает как надо. В MySQL NULL != NULL
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы