MySQL查询 - 如果找不到条目,​​如何返回占位符值而不是NULL

时间:2012-09-13 12:47:55

标签: mysql coalesce

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

我想创建一个查询,它将根据ID为我提供参考编号。像这样:

SELECT reference 
  FROM references 
 WHERE id = x 

(其中x是某个整数)

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

我该怎么做?

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

不起作用

2 个答案:

答案 0 :(得分: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
        )
;

(我个人会跟第一个一起去,但这三个都有效。)

答案 1 :(得分:1)

如果子集具有cardinality 0(id = 2的元素),则没有可比较的内容,可以肯定这样的(id = 2)元素不存在。另一方面,如果你想找到那个空子集中的最大元素,你会得到未知值(超集的每个成员都是空集的上限和下限)

我不确定它是否正确,但是imho,非常合乎逻辑