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 に答える