我有一个表计算器,我想创建一个返回布尔结果的SQL查询,当且仅当计算器不为空时才返回true所以我可以将此布尔值返回给我的应用程序并订购更多。
自然就是使用
EXISTS Calculators
但是对于我的作业,我不允许在任何查询中使用EXISTS关键字或COUNT关键字(或任何其他基数运算符)。
到目前为止,我对查询执行此操作的最佳尝试是
((SELECT * FROM Calculators) IN ANY (SELECT * FROM Calculators))
但这只是一个我无法弄清楚的语法错误。
我又做了一次尝试:
((SELECT * FROM Calculators) IN Calculators)
但是这也会出现语法错误?我真的认为这可以使用IN以某种方式完成,但我不能完全形成查询。你能帮我从我的查询中得到一个布尔值,如果计算器非空,你会返回true吗?
谢谢!
答案 0 :(得分:2)
我对你的问题感到困惑。如果表不为空,您想返回布尔结果吗?如果是这样,这样的事情应该有效:
SELECT DISTINCT 'True' RetVal FROM Calculators
如果存在任何记录,这将返回单个布尔值True。如果不存在记录,它将不返回任何内容。如果不使用COUNT
或其他聚合,请不要认为您可以返回false。可能取决于您的RDBMS。
- 编辑 -
看到你正在使用Oracle,这里有一个hack返回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。