假设我有一个名为references的表,它有两个字段:id和reference字段。
我想创建一个查询,它将根据ID为我提供参考编号。像这样:
SELECT reference
FROM references
WHERE id = x
(其中x是某个整数)
但是如果在表中找不到id,我希望查询显示-1而不是NULL。
我该怎么做?
SELECT COALESCE(reference, -1) FROM references WHERE id = x
不起作用
答案 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,非常合乎逻辑