1

id フィールドと reference フィールドの 2 つのフィールドを持つ、references というテーブルがあるとします。

ID に基づいて参照番号を提供するクエリを作成したいと考えています。このような:

SELECT reference 
  FROM references 
 WHERE id = x 

(x は整数)

ただし、ID がテーブルに見つからない場合は、クエリで NULL ではなく -1 を表示したいと考えています。

これどうやってするの?

SELECT COALESCE(reference, -1) FROM references WHERE id = x 

動作しません

4

2 に答える 2

1

いくつかのアプローチを次に示します。

SELECT COALESCE(MAX(reference), -1)
  FROM references
 WHERE id = ...
;

SELECT COALESCE(reference, -1)
  FROM references
 RIGHT
 OUTER
  JOIN (SELECT 1 c) t
    ON id = ...
;

SELECT COALESCE
        ( ( SELECT reference
              FROM references
             WHERE id = ...
          ),
          -1
        )
;

(個人的には最初のものを使用しますが、3 つすべてが機能します。)

于 2012-09-13T13:03:51.670 に答える
1

サブセットがcardinality0 (id = 2 の要素) の場合、比較するものは何もなく、そのような (id = 2) 要素は存在しないことが確実です。一方、たとえば、その空のサブセットの最大要素を見つけたい場合は、不明な値が得られます (スーパーセットのすべてのメンバーは、空のセットの上限と下限になります)

それが正しいかどうかはわかりませんが、非常に論理的です

于 2012-11-14T11:20:29.797 に答える