的問題不是很清楚,但我們已經有了一個全新的堆棧溢出成員問,所以我要去嘗試做一些假設,看看我是否可以引導他們回答。
首先,如果您有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'所產生的一些行,但它不能很好地描述爲「加入更新」。 –