Обновить запись базы данных по выбранному идентификатору и сбросить исходную запись

0

Пожалуйста, как мне обновить всю запись до 0 и установить только выбранный ID в 1

UPDATE address SET default_addr = 1 
WHERE addr_id = 100 AND user = 'peter'

Вышеприведенный запрос обновит выбранный адрес до 1, что хорошо, но я хочу установить другой адрес или старый выбранный по умолчанию 0 с одним запросом

  • 0
    Пример данных и желаемых результатов помогут. Вы хотите, чтобы только один default_addr установлен в «1» во всей таблице? Это то, что предлагает ваш вопрос.
  • 0
    @GordonLinoff да, я хочу, чтобы только один default_addr был установлен в 1, а другой один раз вернется к 0
Теги:

2 ответа

1
Лучший ответ

В MySQL вы можете:

UPDATE address
    SET default_addr = (addr_id = 100 AND user = 'peter');

(В этом сокращении используется тот факт, что MySQL обрабатывает логические значения как числа в числовом контексте, а "0" для false и "1" для true.)

Если вам нужен только один адрес по умолчанию для пользователя с именем Peter, тогда используйте команду where:

UPDATE address
    SET default_addr = (addr_id = 100)
    WHERE user = 'peter';

Я подозреваю, что это логика, которую вы действительно хотите.

  • 0
    умное использование логического
1

использовать условное обновление с использованием case

update address set default_address = case when addr_id = 100 and user = 'peter' then 1 else 0 end 

вот функциональный пример

Я построил образец схемы. Это часто полезно в ваших будущих вопросах.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню