Пожалуйста, как мне обновить всю запись до 0
и установить только выбранный ID в 1
UPDATE address SET default_addr = 1
WHERE addr_id = 100 AND user = 'peter'
Вышеприведенный запрос обновит выбранный адрес до 1, что хорошо, но я хочу установить другой адрес или старый выбранный по умолчанию 0 с одним запросом
В 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';
Я подозреваю, что это логика, которую вы действительно хотите.
использовать условное обновление с использованием case
update address set default_address = case when addr_id = 100 and user = 'peter' then 1 else 0 end
Я построил образец схемы. Это часто полезно в ваших будущих вопросах.
default_addr
установлен в «1» во всей таблице? Это то, что предлагает ваш вопрос.default_addr
был установлен в 1, а другой один раз вернется к 0