вопрос не очень понятно, но у нас есть новый элемент переполнения стека бренда с просьбой, поэтому я буду стараться сделайте некоторые предположения и посмотрите, могу ли я привести их к ответу.
Во-первых, если у вас есть таблица cities
, не имеет смысла обновлять название города. Просто добавьте или удалите записи из списка по мере необходимости. Если вы должны обновить имя, это не займет соединение. Просто:
update cities set cityname = 'Los Angeles' where id = 2;
То же самое относится и к users
таблице. Не используйте соединение, просто:
update users set pwd = '1234' where id = 4;
Единственную таблицу, которая заслуживает обновлений для этого вопроса является user_has_cities
таблицей.
Итак, давайте предположим, что ваш user_has_cities
таблицы имеет много: многие отношений, что есть много пользователей, и каждый из них имеет много городов, как в этом примере: http://sqlfiddle.com/#!9/f146b
Если вы знаете идентификатор города и пользователь, вы можете сделать простое обновление: http://sqlfiddle.com/#!9/8a420/1
update user_has_cities
set idcities = 1
where iduser = 5
and idcities = 6;
Если вы не знаете идентификатор города, но только имя, вы могли бы поставить select
в вашей статье set
, как это: http://sqlfiddle.com/#!9/0b1f3/1
update user_has_cities
set idcities = (
select id from cities where cityname = 'Los Angeles' limit 1
)
where iduser = 5
and idcities = 6;
Обязательно ограничьте возвращенные записи, или вы получите сообщение об ошибке, если более одного города имеют название «Лос-Анджелес». Это довольно отрывочный код в любом случае; гораздо лучше делать ваши обновления с помощью уникального идентификатора.
Если вы не знаете, идентификатор текущего города, вы могли бы теоретически расширить тему, как это: http://sqlfiddle.com/#!9/b28876/1
update user_has_cities
set idcities = (
select id from cities where cityname = 'Los Angeles' limit 1
)
where iduser = 5
and idcities in (select id from cities where cityname = 'Huntington Beach');
я не претендую, чтобы понять этот вопрос, так что я не знайте, отвечает ли это на это, но я надеюсь, что это поможет вам в правильном направлении.
Отметьте свой вопрос в базе данных, которую вы фактически используете. MySQL и SQL Server - разные продукты. –
Вы уверены, что хотите изменить название города с помощью фильтра 'user.iduser = 1'. Я думаю, что вы должны обновлять название города только по адресу 'cities.idcities = 2' – HAYMbl4
Вы предлагаете обновить только одну таблицу (' city'). Это может изменить некоторые строки, связанные с присоединением «городов» к «пользователям» через 'user_has_cities', но это не очень хорошо описано как« обновление для соединения ». –