基于同一键从另一个表复制字段的简单sql查询
我正在寻找一个最简单的查询,它允许我实现将一些值从表A复制到表B,同时它们都有一个相同的键来标识所需的内容 我基本上有两个代表用户的表(仅用于示例目的)基于同一键从另一个表复制字段的简单sql查询,sql,oracle,Sql,Oracle,我正在寻找一个最简单的查询,它允许我实现将一些值从表A复制到表B,同时它们都有一个相同的键来标识所需的内容 我基本上有两个代表用户的表(仅用于示例目的) Table A contains USER_NAME, USER_ID, JOINED_DATE, RANK Table B contains USER_ID, ACCOUNT_DETAILS, ADDRESS, RANK 我对排名1有一个小错误,现在我看到在某些情况下排名只在B中更新,这意味着在a中它总是空的,但在某些情况下它在B中可用。
Table A contains USER_NAME, USER_ID, JOINED_DATE, RANK
Table B contains USER_ID, ACCOUNT_DETAILS, ADDRESS, RANK
我对排名1有一个小错误,现在我看到在某些情况下排名只在B中更新,这意味着在a中它总是空的,但在某些情况下它在B中可用。
我想运行一个数据库更新,该更新将:
这是Oracle SQL,如果有关系的话。您可以使用以下简单更新:
Update tablea a
Set a.rank = (select b.rank
From tableb b where b.user_id = a.user_id)
Where exists (select 1 from
Tableb b where b.user_id = a.user_id
And b.rank is not null)
And a.rank is null;
--And a.joined_date >= add_months(trunc(sysdate), -1);
只需使用
连接
:
select a.*, b.rank
from a left join
b
on a.user_id = b.user_id and
a.joined_date >= sysdate - interval '30' day
如果要在中更新列组,请执行以下操作:
update a
set rank = (select b.rank
from b
where a.user_id = b.user_id
)
where a.joined_date >= sysdate - interval '30' day;
如果您只想要2020年的日期,则日期比较会略有不同。请提供示例数据和所需结果。@GordonLinoff添加了一个具有预期结果的示例图像,告诉我您是否需要更多信息,还添加了关于该示例的更多详细信息您的问题有点混乱。30天还是2020年?真的不重要,我想在2020年以上跑完全程,并且在某个时候跑完30天,所以只要有日期检查我就可以玩,实际的数字对我来说并不重要