首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制转换(当Id为IN时(从RefId从RefTable选择RefId =RefId),则0其他1结束为位

强制转换(当Id为IN时(从RefId从RefTable选择RefId =RefId),则0其他1结束为位
EN

Stack Overflow用户
提问于 2013-01-22 14:14:54
回答 2查看 7.8K关注 0票数 1

嗨,我的手术有问题

Stored-Procedure:

代码语言:javascript
复制
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-关键字错误语法的错误语法

我搜索了一下,但找不到一个有IN接线员的例子,有人能帮我点一下吗?

如有任何建议,我们深表感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-22 14:15:31

只需删除IS,它就会工作(这只是直接回答您的问题,没有其他问题(如性能改进))。

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2013-01-22 14:19:25

@JW是正确的,但我建议更改您的查询,类似于:

代码语言:javascript
复制
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

我认为这可能会带来更好的表现。

祝好运。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14460599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档