1

假设我有一个名为 references 的表,它有两个字段:一个 id 和一个 reference 字段。

我想创建一个查询,该查询将为我提供基于 id 的参考号。像这样:

SELECT reference 
  FROM references 
 WHERE id = x 

(其中 x 是某个整数)

但是,如果在表中找不到 id,我希望查询显示 -1 而不是 NULL。

我怎样才能做到这一点?

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

不工作

4

2 回答 2

1

如果子集有cardinality0(id = 2 的元素),则没有什么可比较的,可以确定这样的 (id = 2) 元素不存在。另一方面,如果你想找到那个空子集中的最大元素,你将得到未知值(超集的每个成员都是空集的上确界和下确界)

我不确定这是否正确,但恕我直言,很合乎逻辑

于 2012-11-14T11:20:29.797 回答
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
        )
;

(我个人会选择第一个,但所有三个都可以。)

于 2012-09-13T13:03:51.670 回答