sql - 不更新 IIF 的更新语句
问题描述
我有一个带有订单号、文章号和排名的简单表格:
select * from tbl_temp_ranked
我只想用 rank=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
我的目标表(TBL_HAKA_BASE_STAGE)永远不会更新。它只在我写的时候更新
iif(ranked=1, ranked, null)
只有在这种情况下,我的目标表才会更新!写ranked<>1
, ranked>1
, ranked!=1
,ranked=2
不会更新我的表格。case when
此 - 语句中的- 条件相同SET
。铸造也没有帮助!
我可以在我的语句中添加这个条件,这WHERE
很有帮助,是的,但是这个简短的 SQL 示例只是一个大语句中的一个非常短的代码,所以这对我来说不是一个很好的解决方案。这会让我一遍又一遍地重复所有代码。
这是两个表的结构,也许有帮助
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。
解决方案
您在“排名”表中有重复项。我想你想要一个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;
推荐阅读
- ruby-on-rails-6 - Rails 6.1 升级后打破 Cloudinary
- c - 在 C 中用 'c' 替换 ','
- css - React 组件的样式与其他组件的样式冲突
- php - 多步表单 PHP Laravel
- javascript - 从 Vue 方法切换侧边栏?
- python - 将数据帧的标题拖放/移动到第一行
- sql - 从地址sql查询中分离机构名称和电话
- excel - 在 VB 运行时启动后仅显示 Excel 启动画面
- javascript - 呈现 HTML 模板并使用它发送上下文,但获取响应未读取上下文并显示有关 JSON 的错误
- vb.net - Visual Studio IDE - 从我的代码中删除标题 0