嗨我的手术有问题
存储过程:
SELECT dbo.Table1.*,
CAST (CASE WHEN Table1.Id IS IN ( SELECT Id
FROM dbo.Table2
WHERE RefRolleId =@Id)
THEN 0 ELSE 1 END AS bit) AS selected
FROM dbo.Table1
错误: IN-Keyword附近的语法错误 THEN-Keyword附近的语法错误
我用谷歌搜索但我没有找到一个带有IN运算符的Case的示例 有人可以告诉我什么是错的
非常感谢任何建议
答案 0 :(得分:2)
只需删除IS
即可使用(这只是为了直接回答您的问题而不是其他任何内容(例如,绩效改进))
SELECT dbo.Table1.*,
CAST (CASE WHEN Table1.Id IN ( SELECT Id
FROM dbo.Table2
WHERE RefRolleId =@Id)
THEN 0 ELSE 1 END AS bit) AS selected
FROM dbo.Table1
答案 1 :(得分:2)
@JW是正确的,但我建议更改您的查询,例如:
SELECT DISTINCT T.*,
CAST (CASE
WHEN T2.Id IS NOT NULL
THEN 0
ELSE 1
END AS bit) AS selected
FROM dbo.Table1 T
LEFT JOIN dbo.Table2 T2 ON T.Id = T2.Id AND T2.RefRolleId =@Id
我认为这可能会带来更好的表现。
祝你好运。