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')
Run Code Online (Sandbox Code Playgroud)
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'
Run Code Online (Sandbox Code Playgroud)
?
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
Run Code Online (Sandbox Code Playgroud)
找到一些相关的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;
Run Code Online (Sandbox Code Playgroud)
要么:
IF EXISTS( SELECT cx.id
FROM fdd.admissions_view as cx
WHERE cx.id=1111 and cx.campus='MEXI' ) SELECT 1 AS returnValue
Run Code Online (Sandbox Code Playgroud)
小智 5
问题是EXISTS在某些语法结构中只是有效的语法.我不知道正式的规则(这意味着我应该去RTFM: - ?),但是当用作表达式时EXISTS,case它可以包含在其中:
set @r = case when exists (...) then 1 else 0 end
return case when exists (...) then 1 else 0 end
Run Code Online (Sandbox Code Playgroud)
例如
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
Run Code Online (Sandbox Code Playgroud)