Запрос с выбором строк

#1 21 июля 2021 в 13:29

Ребят, подскажите, как должен выглядеть запрос в MySQL, чтобы заменить несколько строк?

UPDATE table SET field = REPLACE(field, 'старое_значение', 'новое_значение'); — это понятно

А как выборку делать в sql, например по ID? Мне необходимо в таблице shop изменить значение is_approved с 1 на 0 (верхний запрос работает), но нужно выбрать ID с 50 по 90. И второй запрос такой же, но например не подряд с 50 по 90, а 55, 53, 61.

P.S. Весь интернет перелопатила и не нашла нужного.

 

#2 21 июля 2021 в 13:36
  1. UPDATE table_name
  2. SET column1 = value1, column2 = value2, ...
  3. WHERE condition;
#3 21 июля 2021 в 13:40
  1. UPDATE table_name
  2. SET column1 = value1, column2 = value2, ...
  3. WHERE condition;
IamB

Как поняла там перечислять все ID? Что-то совсем не понятно куда, что писать.

#4 21 июля 2021 в 14:01

Как поняла там перечислять все ID?

Delika

Как вариант, но можно и по-другому.

#5 21 июля 2021 в 14:18

Как поняла там перечислять все ID?

Delika

Как вариант, но можно и по-другому.

IamB

Вариант 1 то, что мне нужно, но вот при запросе выдает ошибку. Что тут не так?

UPDATE inst_con_shopping SET `is_approved` WHERE id>=205 AND id<=210 = REPLACE(`is_approved`, '1', '0');

#6 21 июля 2021 в 14:24

но вот при запросе выдает ошибку. Что тут не так?

Delika

Предложу сначала потренироваться на SELECT

SELECT * FROM inst_con_shopping WHERE id >= 205 AND id <= 210

Потом посмотреть еще раз синтаксис UPDATE и попробовать ещё раз

#7 21 июля 2021 в 14:49

но вот при запросе выдает ошибку. Что тут не так?

Delika

Предложу сначала потренироваться на SELECT

SELECT * FROM inst_con_shopping WHERE id >= 205 AND id <= 210

Потом посмотреть еще раз синтаксис UPDATE и попробовать ещё раз

IamB

Выборку делает запрос SELECT * FROM inst_con_shopping WHERE id >= 205 AND id <= 210

А вот этот запрос, не выбирает, а у всех меняет значение.

SELECT * FROM inst_con_shopping WHERE id >= 205 AND id <= 210;
UPDATE inst_con_shopping SET `is_approved` = REPLACE(`is_approved`, '1', '0')

#8 21 июля 2021 в 15:06

Выборку делает запрос SELECT * FROM inst_con_shopping WHERE id >= 205 AND id <= 210

Delika

Всё верно! Этот запрос делает выборку между 205 и 210 записями включительно

SELECT * FROM inst_con_shopping WHERE id >= 205 AND id <= 210;
UPDATE inst_con_shopping SET `is_approved` = REPLACE(`is_approved`, '1', '0')

Delika

А тут у вас не один запрос, а два. Первый выбирает записи ГДЕ id >= 205 AND id <= 210, а второй обновляет все записи в таблице.

Вам надо во втором запросе добавить условие для обновления

  1. UPDATE inst_con_shopping SET `is_approved` = REPLACE(`is_approved`, '1', '0') WHERE id >= 205 AND id <= 210;
#9 21 июля 2021 в 15:35

 

А тут у вас не один запрос, а два. Первый выбирает записи ГДЕ id >= 205 AND id <= 210, а второй обновляет все записи в таблице.

Вам надо во втором запросе добавить условие для обновления

  1. UPDATE inst_con_shopping SET `is_approved` = REPLACE(`is_approved`, '1', '0') WHERE id >= 205 AND id <= 210;
Loadырь

Тоже не работает, ошибок нет уже, но выдает Затронуто 0 строк. И ничего не изменилось.

Добавлено спустя 6 минут

Извиняюсь, Ваш запрос работает, это я перепутала 1 и 0. Спасибо за помощь. Может еще подскажите как выборочный ID делать? С этим теперь понятно WHERE id >= 205 AND id <= 210;

А как этот же запрос сделать, если нужны только 53, 55, 59.

Сохраню где нибудь эти запросы, а то мне каждые три дня их делать. Сама точно б не разобралась.

#10 21 июля 2021 в 16:14

если нужны только 53, 55, 59.

 

Delika

Попробуйте условие WHERE id IN (53, 55, 59)

Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.