使用 IF 更新语句不更新

Update statement with IIF not upading

我有一个简单的 table,其中包含订单号、商品编号和排名:

select * from tbl_temp_ranked

我只想更新另一个 table,等级 = 2。所以我使用以下更新语句

update hbs
set hbs.[2ND_NEXT_ORDER_Nr]=iif(ranked=2, ranked, null)
from TBL_HAKA_BASE_STAGE hbs
join tbl_temp_ranked tmp
on hbs.artikelnummer=tmp.artikelnummer
where hbs.Artikelnummer=115996

我的目标-table (TBL_HAKA_BASE_STAGE) 永远不会更新。它只在我写

时更新
iif(ranked=1, ranked, null)

只有在那种情况下,我的目标 table 才会更新!写入 ranked<>1ranked>1ranked!=1ranked=2 不会更新我的 table。 case when-条件在这个SET-语句中相同。铸造也没有帮助!

我可以在我的 WHERE-语句中添加这个条件,这有帮助,是的,但是这个简短的 SQL-示例只是一个大语句中的一个非常短的代码,所以这不是对我来说是一个很好的解决方案。这会让我一遍又一遍地重复所有代码。

这是两个 table 的结构,也许对

有帮助
CREATE TABLE [dbo].[tbl_temp_ranked](
    [auftragsnummer] [float] NULL,
    [artikelnummer] [float] NULL,
    [ranked] [bigint] NULL
)

CREATE TABLE [dbo].[TBL_HAKA_BASE_STAGE](

    [Artikelnummer] [float] NULL,
    [NEXT ORDER Nr] [float] NULL
) 

它是 SQL 服务器 2017。

您在“排名”中有重复项table。我想你想要 left join:

update hbs
    set hbs.[2ND_NEXT_ORDER_Nr] = tmp.ranked
    from TBL_HAKA_BASE_STAGE hbs left join
         tbl_temp_ranked tmp
         on hbs.artikelnummer = tmp.artikelnummer and tmp.ranked = 2
    where hbs.Artikelnummer = 115996;