bla*_*son 17 t-sql sql-server exists
在不使用WHERE子句的情况下,在简单查询中是否有任何方法可以使用SQL EXISTS语句返回布尔值?
所有2008 R2 SQL Server联机丛书示例都显示了另一个WHERE子句和两个表.网站示例显示过程中的WHERE或IF-THEN-ELSE.
我希望在一张桌子上做以下事情:
EXISTS
(SELECT  cx.id
 FROM fdd.admissions_view as cx  
 WHERE cx.id=1111 and cx.campus='MEXI') 
SELECT语句正常工作并返回ID.我只想添加EXISTS来返回BOOLEAN,但上面的语法无效.
我可以这样做吗?如果是这样,我在语法方面缺少什么?如果没有,还有什么其他技术可行?
请指教.谢谢.
500*_*ror 16
怎么样的
select case when count(cx.id) > 0 then 1 else 0 end 
 FROM fdd.admissions_view as cx  
 WHERE cx.id=1111 and cx.campus='MEXI'
?
rye*_*nus 13
这里是一个它采用EXISTS与CASE WHEN ... THEN .. ELSE ... END与MySQL和Oracle测试:
SELECT 
  CASE WHEN EXISTS 
    (SELECT  cx.id
     FROM fdd.admissions_view as cx  
     WHERE cx.id=1111 and cx.campus='MEXI')
  THEN 1 
  ELSE 0 
  END 
FROM DUAL
找到一些相关的Q/A:
Thi*_*iff 11
不完全确定你的意思是"回归",但这里有一些想法.
DECLARE @return BIT = 0;
IF EXISTS( SELECT  cx.id
    FROM fdd.admissions_view as cx  
    WHERE cx.id=1111 and cx.campus='MEXI' ) SET @return = 1;
要么:
IF EXISTS( SELECT  cx.id
    FROM fdd.admissions_view as cx  
    WHERE cx.id=1111 and cx.campus='MEXI' ) SELECT 1 AS returnValue
小智 5
问题是EXISTS在某些语法结构中只是有效的语法.我不知道正式的规则(这意味着我应该去RTFM: - ?),但是当用作表达式时EXISTS,case它可以包含在其中:
set @r = case when exists (...) then 1 else 0 end
return case when exists (...) then 1 else 0 end
例如
return case when exists (SELECT 1 -- because it's as good as anything else
    FROM fdd.admissions_view as cx  
    WHERE cx.id=1111 and cx.campus='MEXI')
  then 1 else 0 end
| 归档时间: | 
 | 
| 查看次数: | 20760 次 | 
| 最近记录: |