我有两个表,我在它们之间使用简单的连接条件。
我需要找到常用值并将字符串(成功)更新到列中。
input_table1:
ID || Name || output
1 || ABS || Null
2 || ADF || NULL
3 || AQS || Null
4 || ATF || NULL
5 || APS || Null
6 || AMF || NULL
Input_table2:
ID || Name
1 || ABS
2 || ADF
6 || AMF
Output_table:这是我需要的输出。
ID || Name || output
1 || ABS || Success
2 || ADF || Success
3 || AQS || Null
4 || ATF || NULL
5 || APS || Null
6 || AMF || Success.
这是我正在使用的查询,这是我收到的错误 在预期条件的上下文中指定的非布尔类型的表达式,接近'Then'。
update .[dbo].[InputTable1]
set Output=
case when (
select INT.ID
from [dbo].[input_table1] INT
join [dbo].[input_table2] SHB
on INT.ID=SHB.ID
) Then 'Success' Else Null End
答案 0 :(得分:5)
您的查询应该只是
update INT
set Output= 'Success'
FROM
[dbo].[input_table1] INT
join [dbo].[input_table2] SHB
on INT.ID=SHB.ID
的 See working demo 强>
答案 1 :(得分:3)
...CASE WHEN <condition> = <value> THEN....
您遗失<value>
我怀疑您在查询后需要IS NOT NULL
。
那说,效率不高。 DhruvJoshi更好
答案 2 :(得分:1)
我会在EXISTS
后面使用FROM
和UPDATE
作为
UPDATE it
SET Output = (CASE WHEN exists(
SELECT 1
FROM [dbo].[input_table2] SHB
WHERE it.ID=SHB.ID)
THEN 'Success' ELSE Null END)
FROM [dbo].[InputTable1] it
答案 3 :(得分:1)
你可以试试这个:
UPDATE
InputTable1
SET
Output='Success'
FROM
InputTable1
JOIN InputTable2 ON
InputTable1.ID=InputTable2.ID
只会更新已加入的行