我在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标准。
答案 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)