在Sybase中选择EXISTS

时间:2017-01-27 15:59:47

标签: sql-server sybase sybase-ase

我在PostgreSQL中有以下查询(1=1是一个占位符,用于某些任意条件,因为显然我无法在Sybase中编写WHERE TRUE

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

如何为SQL Server / Sybase语法翻译它们? 一种迂回的方式是:

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

......可以进一步简化为:

SELECT COUNT(*) FROM someTable WHERE 1=1  

...但是EXISTS更清洁,我相信它也符合ANSI标准。

3 个答案:

答案 0 :(得分:1)

不确定您对“EXISTS”的期望,但这可能会起到作用

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

答案 1 :(得分:1)

exists()不会返回您可以选择的值(我不知道为什么)。您可以查看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 server的常见模式如下:

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

答案 2 :(得分:0)

试试这个:

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