我有一张桌子 - 姓名:薪水:
Code SM SM_Desc
4 23 NULL
4 12 NULL
5 11 NULL
5 12 NULL
6 44 NULL
6 15 NULL
.
.
.
27 99 NULL
32 CK4 BLABLA
33 242 BLABLA
34 64 BLABLA
另一张表 - ListSM:
SM SM_Desc
1 Bla1
2 Bla2
3 bla3
4 bla4
.
.
.
99 bla5
.
.
64 bla6
我想根据ListSM表中的字段SM更新薪水表中的字段SM_Desc,但仅限于4到27之间的代码值(包括在内)。
含义: 我不希望工资表中的值BLABLA将被值'bla6'覆盖。我不会在薪资表中为代码值32,33,34更改任何内容。 如果ListSm不包含薪水表中的值 - 请将其保留为NULL。
我到目前为止写道:
UPDATE dbo.Salary
SET Salary.SM_Desc = ListSM.SM_Desc
FROM ListSM INNER JOIN ListSM ON Salary.SM = ListSM.SM
where salary.code is between 4 and 27
那会有用吗?还有其他建议吗?
非常感谢!
答案 0 :(得分:0)
您必须再次包含目标表名称作为FROM子句中的第一个表:
UPDATE dbo.Salary SET
Salary.SM_Desc = ListSM.SM_Desc
FROM
dbo.Salary
INNER JOIN
ListSM
ON
Salary.SM = ListSM.SM
WHERE
Salary.Code IS BETWEEN 4 AND 27;
如果您只想更新Salary表中的现有代码是否在4到27之间(如上所述),那么我不会100%清楚 - 如果您只想更新if ListSM表中存在4到27之间的代码。如果它是后者,那么只需在最后的WHERE子句中更改表名。