В SQL есть тернарный оператор?

MySQL

Поле visible может хранить либо 0 либо 1 (тип enum)
В скрипте обнаружил такой SQL запрос, который работает
<code lang="MySQL">
UPDATE users SET visible = if(visible='1', '0', '1') WHERE id='".intval($id)."'
</code>

Мне нужно написать похожий запрос для другого поля, которое также может хранить либо 0 либо 1 (тип enum)
только вместе с ON DUPLICATE KEY UPDATE.
Я написал
<code lang="MySQL">
INSERT INTO user_settings SET a_disabled = if(a_disabled='1', '0', '1') WHERE id_user='".intval($user_id)."'
ON DUPLICATE KEY UPDATE a_disabled = if(a_disabled='1', '0', '1')
</code>
Но он уже не работает. Где ошибка и как использовать тернарный оператор в MySQL-запросах?
Ответы:
А с каких пор в SQL предложение WHERE используется вместе с INSERT? И почему текст ошибки не привели?


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.