Не понимаю почему не работает IF в Mysql?

lutskboy
На сайте с 22.11.2013
Offline
171
343

Привет

значит есть запрос


INSERT INTO table (kp_id, year, quality, serial, last_episode)
VALUES (817506, 2014, 'BDRip', 0, 8)
ON DUPLICATE KEY UPDATE `year`='2014', `quality`='BDRip', `status`=IF(`quality`!='BDRip' OR `last_episode`!='8', 1, `status`);

с помощью IF(`quality`!='BDRip' OR `last_episode`!='8', 1, `status`) я обновляю поле status.

но оно обновляется только когда выполняется второе условие `last_episode`!='8', а если первое то не хочет.

что не так в нем?

S
На сайте с 30.09.2016
Offline
469
#1
lutskboy:
что не так в нем?

`quality`!='BDRip'
Надо
`quality`<>'BDRip'
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
lutskboy
На сайте с 22.11.2013
Offline
171
#2

похоже не в етом дело

у меня заработало и так как есть. поменял местами if c last_episode и quality

IL
На сайте с 20.04.2007
Offline
435
#3
lutskboy:
но оно обновляется только когда выполняется второе условие `last_episode`!='8', а если первое то не хочет.

Скобочки расставить...

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#4
Sitealert:
`quality`!='BDRip'
Надо
`quality`<>'BDRip'

Без разницы. Оба варианта работают в Mysql

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
S
На сайте с 30.09.2016
Offline
469
#5
LEOnidUKG:
Без разницы. Оба варианта работают в Mysql

Так-то оно так, но <> канонический вариант, и с тех пор, как у меня (как-то давно уже) не сработало неравенство !=, я его в SQL вообще не использую.

А в примере из стартпоста было 3 варианта:

1. Оператор <>

2. Скобки

3. Вообще IS NULL.

Предложил первое, что пришло в голову.

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#6
Так-то оно так

Поэтому ваш первый пост заблуждение. Дальше "мне так нравиться", не имеет никакого смысла к вопросу ТС-а,

---------- Добавлено 07.12.2019 в 20:38 ----------

lutskboy, вашу задачу не возможно решить PHP языком, без использования Mysql условий? Это весьма редкие случаи, использование на постоянной основе условий в Mysql.

lutskboy
На сайте с 22.11.2013
Offline
171
#7

LEOnidUKG, можно. но захотелось так попробовать

практически такое никогда не использовал

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#8
lutskboy:
LEOnidUKG, можно. но захотелось так попробовать
практически такое никогда не использовал

Понимаете, большой функционал разных СУБД, связан с работой в консоле с ними напрямую и там где нет обработки, а нужно просто получать данные.

Условные запросы потребляю больше ресурсов, поэтому при разработке лучше придерживаться логики: "Чем проще запрос, тем лучше".

PHP со всем этим справляет в разы лучше.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий