nazarpc
@nazarpc
Open Source enthusiast

Как убрать подзапрос?

Есть запрос:
UPDATE `table` SET `category` = '0' WHERE `category` = '1' AND `id` NOT IN (SELECT `id` FROM `table` WHERE `category` = '0')


То есть нужно по возможности сменить category c 1 на 0, но только для тех записей, где category не равно 0, чтобы не было дублей.

Таблица состоит из id и category, индекс PRIMARY на две колонки. Нужен вариант который подойдет к большинству SQL БД. Думал с FULL OUTER JOIN, но MySQL такое не поддерживает, с UNION будет медленно.
  • Вопрос задан
  • 2477 просмотров
Решения вопроса 1
Wott
@Wott
Индекс на два поля -> уникальный и update ignore
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
sl_bug
@sl_bug
Либо я не понял, либо

UPDATE `table` SET `category` = '0' WHERE `category` = '1' 

то что вам нужно
Ответ написан
@gelas
Что-то, по-моему, Вы перемудрили, WHERE `category` = '1' итак отсекает те записи где `category` = '0'
вполне достаточно UPDATE `table` SET category = 0 WHERE category = 1
Ответ написан
Ваш ответ на вопрос

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

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