@sashavol

Запрос UPDATE c JOIN, как правильно обновить поля?

Здравствуйте, совсем мало опыта с sql, а особенно с join. Но нужно сделать запрос в проекте, чтобы поправить данные. Точечно сделать это мало возможно, так как изменить нужно это у 100 тыс. записей из 700 тыс. Изменения нужно сделать в таблице "А", а id пользователя указана в таблице "Б" по которому нужно провести изменения в таблице "А", плюс в этой же таблице "А", учесть что значения равно "200". Соответственно в таблице "А" есть связывающий id с таблицей "Б". Примерно это выглядит вот так:

Таблица А
id - уник. primary
id_Б - связывающий с таблицей Б id
rate - То поле, которое нужно изменить (int), если оно равно 200 (нужно поменять на 160)


Таблица Б
id - уник. primary
id_client - поле, по которому нужно сделать выборку, например WHERE id_client == 2


Примерно я вижу следующий запрос:
UPDATE А
SET rate = 160
WHERE rate = 200

// и тут надо соединить ещё конструкцию, уже из другой конструкции, чтобы проверить нужного юзера
FROM Б
WHERE A.id_Б = Б.id AND Б.id_client = 2
  • Вопрос задан
  • 8421 просмотр
Пригласить эксперта
Ответы на вопрос 3
@nozzy
Symfony, Laravel, SQL
Не проверял
update a t1
join b t2 on t2.id = t1.id_b
set t1.rate = 160
where t1.rate = 200
and t2.id_client = 2
Ответ написан
@kuftachev
"Здравствуйте, совсем мало опыта с sql, а особенно с join. Но нужно сделать запрос в проекте, чтобы поправить данные. "

Или не правда, что это в проекте, или не подходите туда, пока Вы не понимаете что делаете!
Ответ написан
@arefanov
update a
set rate = 160
from b
where a.id = b.id and rate = 200
например так. так же выборку по b можно вынести в подзапрос/преселект
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы