我在SQL上有以下代码:
select u.openid, u.screenname, svd.user_name
from gw_svd_prefix_assignment svd
join user_ u
on u.screenname = svd.USER_NAME;
现在它将显示三行,screenname,user_name和openID。 screenname和user_name完全相同,这就是我加入它们的原因,但是我想将user_name更改为不同的openID值。
我该怎么办?
编辑以下是一个例子:
OPENID SCREENNAME USER_NAME
==========================================
Smith.A Smith.Alan Smith.Alan
Someone.J Someone.Juan Someone.Juan
Foo.V Foo.Vallery Foo.Vallery
Hee.L Hee.Lee Hee.Lee
我希望桌子看起来像:
OPENID SCREENNAME USER_NAME
==========================================
Smith.A Smith.Alan Smith.A
Someone.J Someone.Juan Someone.J
Foo.V Foo.Vallery Foo.V
Hee.L Hee.Lee Hee.L
所以我想将User_Name中的值替换为OPENID
中的相应值答案 0 :(得分:1)
select u.openid, u.screenname, u.openid user_name
from gw_svd_prefix_assignment svd
join user_ u
on u.screenname = svd.USER_NAME;
答案 1 :(得分:1)
如果screenname
表中user_
不唯一,则该要求没有意义(user_
表中的哪一行应该用于更新行中的一行svd
,如果screenname
不唯一?)
如果screenname
唯一,则可以非常轻松地完成更新,如下所示,但这需要screenname
上的UNIQUE约束(或主键约束) 。如果当前不存在约束,则可以使用ALTER TABLE ... ADD CONSTRAINT ...
语句添加约束。
update ( select user_name, openid, screenname
from svd join usr on svd.user_name = usr.screenname )
set user_name = openid;