我有一个表计算器,我想创建一个返回布尔结果的SQL查询,当且仅当计算器不为空时为真,这样我才能将这个布尔值返回给我的应用程序并订购更多。
自然而然的事情就是使用
EXISTS Calculators但对于我的赋值,我不允许在任何查询中使用EXISTS关键字或COUNT关键字(或任何其他基数操作符)。
到目前为止,我对执行此操作的查询的最好尝试是
((SELECT * FROM Calculators) IN ANY (SELECT * FROM Calculators))但这只是给出了一个语法错误,我找不出来。
我还有一次尝试:
((SELECT * FROM Calculators) IN Calculators)但是这也会给出一个语法错误?我真的认为这可以使用IN完成,但我不能完全形成查询。你能帮我从我的查询中得到一个布尔值吗?如果计算器不为空,它就会返回true。
谢谢!
发布于 2013-02-21 10:01:14
你的问题把我搞糊涂了。如果你的表不为空,你想返回一个布尔结果吗?如果是这样的话,像这样的东西应该是有效的:
SELECT DISTINCT 'True' RetVal FROM CalculatorsSample SQL Fiddle
如果存在任何记录,这将返回单个布尔值True。如果不存在任何记录,则不会返回任何内容。不要认为不使用COUNT或其他聚合就可以返回false。可能取决于您的RDBMS。
-编辑--
鉴于您使用的是Oracle,下面是一个返回true或false的技巧:
SELECT DISTINCT 'True' RetVal
FROM Calculators
UNION
SELECT 'False' FROM DUAL d
LEFT JOIN Calculators c ON 1=1
WHERE CalculatorId IS NULL和更多的fiddle。
https://stackoverflow.com/questions/14993298
复制相似问题