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)
我在 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)