根据另一个表更新表
我正在尝试根据另一个表中的另一列更新表中的列。
UPDATE eval e
SET rank = (SELECT p.desc
FROM Position p
WHERE p.id = e.faculty
AND p.date >= '2011-05-20'
)
p.id
和 e.faculty
对应。如果 id 相同,我想用 p.desc
更新排名。 (e.faculty
和 p.id
)
任何帮助都会很棒! :)
I'm trying to update a column in a table based on another column in another table.
UPDATE eval e
SET rank = (SELECT p.desc
FROM Position p
WHERE p.id = e.faculty
AND p.date >= '2011-05-20'
)
p.id
and e.faculty
correspond. I want to update rank with p.desc
if the id's are the same. (e.faculty
and p.id
)
Any help will be great! :)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
对于 SQL Server 尝试此操作:
或者如果您需要基表上的别名(无论出于何种原因),您需要执行以下操作:
Try this for SQL Server:
or if you need an alias on the base table (for whatever reason), you need to do this:
您需要一个
WHERE
子句形式的限制;如果您使用EXISTS
,您可以基于标量子查询,例如注意上面的目标是基表
eval
上的UPDATE
而不是相关名称e
。当您从关系分配的角度考虑 SQLUPDATE
时,这更有意义,即您不想分配给e
因为它(与基表不同)将超出范围!You need a restriction in the form of a
WHERE
clause; if you useEXISTS
you can based it on you scalar subquery e.g.Note the above targets the
UPDATE
on the base tableeval
rather than the correlation namee
. This makes a lot more sense when you think of an SQLUPDATE
in terms of relational assignment i.e. you don't want to assign toe
because it (unlike the base table) will go out of scope!