SELECT 存在于 Sybase 中

SELECT EXISTS in Sybase

我在 Postgre 中有以下查询SQL(1=1 是一些任意条件的占位符,显然我不能在 Sybase 中写 WHERE TRUE

SELECT EXISTS FROM (
    SELECT 1 FROM someTable WHERE 1=1  
)

如何将它们翻译成 SQL 服务器/Sybase 语法? 迂回的方法是:

SELECT COUNT(*) FROM (
    SELECT 1 FROM someTable WHERE 1=1  
) a

… 可以进一步简化为:

SELECT COUNT(*) FROM someTable WHERE 1=1  

… 但是 EXISTS 更干净,我相信它也符合 ANSI 标准。

不确定您对 'EXISTS' 的期望,但这可能会成功

SELECT 1 
WHERE EXISTS (SELECT 1 FROM dbo.Table WHERE 1 = 1)

exists() 不是 return 可以 select 的值(我不知道为什么)。您可以检查 if exists(),但不能检查 select exists()。您还可以检查 where exists() 甚至 case when exists()

select 
    E = case 
        when exists(
          select 1 from master..spt_values
        ) 
          then 1
        else 0 
        end

如果您尝试获取多个不同条件的计数,sql 服务器的常见模式如下:

select 
    ACount     = sum(case when x='A' then 1 else 0 end)
  , ABCount    = sum(case when x in ('A','B') then 1 else 0 end)
  , TotalCount = count(*) /* or sum(1) */ 
from someTable

试试这个:

SELECT IIF(EXISTS (SELECT 1 FROM mytable WHERE 1=1), 1, 0)