的问题不是很清楚,但我们已经有了一个全新的堆栈溢出成员问,所以我要去尝试做一些假设,看看我是否可以引导他们回答。
首先,如果您有cities
表格,更新城市名称没有多大意义。只需根据需要添加或删除列表中的记录即可。如果您必须更新名称,则不需要加入。简单地说:
update cities set cityname = 'Los Angeles' where id = 2;
表也是如此。不要使用加入,只是:
update users set pwd = '1234' where id = 4;
唯一的表,值得对这个问题的更新是user_has_cities
表。
因此,让我们假设你的user_has_cities
表有很多:很多关系,即有许多用户,每个人都有许多城市就像这个例子:http://sqlfiddle.com/#!9/f146b
如果你了解这个城市和的id用户,你可以做一个简单的更新:http://sqlfiddle.com/#!9/8a420/1
update user_has_cities
set idcities = 1
where iduser = 5
and idcities = 6;
如果你不知道这个城市的ID,但只是名字,你可以把一个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;
确保限制返回的记录,否则如果不止一个城市的名称为“洛杉矶”,则会出现错误。无论如何,这是非常粗略的代码。使用唯一ID进行更新会更好。
如果你不知道当前城市的ID,你可以在理论上扩大这样的主题: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
你只是建议更新一个表格('城市')。这可能会改变通过'user_has_cities'将'cities'加入'users'所产生的一些行,但它不能很好地描述为“加入更新”。 –