我有以下SQL查询,这个查询的目的是检测丢失的序列:例如,如果我有seq 1,2,3,5 ...它应该用消息"更新记录5。缺少先前的序列"。
尝试使用inner join
语句中的更新来执行此逻辑,如下所示,尽管它在第1行给出的错误TblA
不明确:
update dbo.TblA
set Msg = 'Previous sequence is missing'
from dbo.TblA R1
left join dbo.TblA R2
on (R2.Sequence = R1.Sequence -1)
and (R2.StatementNumber = R1.StatementNumber)
where R2.TransID is null and R1.Sequence <> 1
我知道这可以通过嵌套查询轻松修复,但我想的是更有条理和更整洁的东西:)
答案 0 :(得分:1)
使用此查询。它没有在表上设置要更新的别名,只是在左连接上。
update dbo.TblA
set Msg = 'Previous sequence is missing'
from dbo.TblA
left join dbo.TblA R
on (R.Sequence = TblA.Sequence -1)
and (R.StatementNumber = TlbA.StatementNumber)
where R.TransID is null and Tbla.Sequence <> 1