0

我有一个表 Calculators,我想创建一个返回布尔结果的 SQL 查询,当且仅当 Calculators 不为空时为 true,因此我可以将此布尔值返回给我的应用程序并订购更多。

自然的事情是使用

EXISTS Calculators

但是对于我的任务,我不允许在任何查询中使用 EXISTS 关键字或 COUNT 关键字(或任何其他基数运算符)。

到目前为止,我在查询中执行此操作的最佳尝试是

((SELECT * FROM Calculators) IN ANY (SELECT * FROM Calculators))

但这只是给出了一个我无法弄清楚的语法错误。

我又做了一次尝试:

((SELECT * FROM Calculators) IN Calculators)

但这也给出了语法错误?我真的认为这可以通过某种方式使用 IN 来完成,但我不能完全形成查询。如果 Calculators 不为空,您能帮我从查询中获取一个返回 true 的布尔值吗?

谢谢!

4

1 回答 1

2

我对你的问题感到困惑。如果您的表不为空,您想返回一个布尔结果吗?如果是这样,这样的事情应该可以工作:

SELECT DISTINCT 'True' RetVal FROM Calculators

示例 SQL 小提琴

如果存在任何记录,这将返回一个布尔 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

还有更多的小提琴

于 2013-02-21T02:01:14.143 回答