我有一张cardstatus卡:1(开放)
我有另一张cardstatus卡:2(已关闭)
我经营一项工作,在cardstatus上制作两张牌:3(暂停)
现在,我想写一个更新语句,它将两张卡设置为以前的状态。我刚给你1张和1张牌作为例子。
实际上有1000张卡片,显然我不想写那么多更新语句而且我不想更改当前的代码。目前,update语句中的逻辑将所有保持卡(cardstatus 3)置于活动状态(cardstatus 1)。
卡表有cardstatus(当前状态)
cardaudit表有cardstatus(流行的卡状态)
cardaudit表中的卡和cardaudit表共有cardstatus
我想写:
update card set cardstatus = (some query to get the previous status)
更新!!!
我得到了答案。
答案 0 :(得分:0)
样本数据会更容易,但仍然是:
create table credit (tid int, stat varchar(10))
insert into credit values (1,'hold'),(2,'hold')
create table creditaudit (id int identity, tid int, stat varchar(10))
insert into creditaudit (tid, stat)
values (1,'open'), (1,'close'), (2,'open'), (1,'active'), (2,'close')
select * from credit
select * from creditaudit
;with cte
as (select tid, stat, row_number() over(partition by tid order by id desc) rn
from creditaudit)
select * from credit
join cte on credit.tid = cte.tid
where rn = 1