Leetcode数据库584.COALESCE (reference_id 0)含义

我已经尝试了 leetcode 584 数据库查询挑战这里是挑战question

我已经尝试了 leetcode 584 数据库查询挑战这里是挑战question

论坛上一个人的答案告诉我答案应该是:

SELECT name FROM customer WHERE COALESCE(referee_id,0) <> 2;

我知道COALESCE FUNCTION是关于。但是,我不知道为什么将 0 放在括号中作为参数和代码中的逻辑"COALESCE(referee_id,0)<>2"我希望有人能帮助我解释WHERE子句的逻辑。非常感谢你,我很感激。

0

如果referee_idNULL,则referee_id <> 2也为NULL,因此不成立。referee_idNULL0 <> 2为 true 时,coalesce(referee_id, 0) <> 20 <> 2相同。

根据练习,应该包括referee_idNULL的客户。这就是使用coalesce(referee_id, 0) <> 2的原因。

然而,我宁愿写

...
WHERE referee_id <> 2
       OR referee_id
...

因为如果要更改查询以检查0以外的referee_id的客户,则仅更改文字将排除referee_idNULL的行。

0

您可以将其翻译为:

SELECT name 
FROM customer 
WHERE referee_id <> 2 or referee_id is null;

如果你这样写:

SELECT name 
FROM customer 
WHERE COALESCE(referee_id,2) <> 2;

它将只返回“Zack”。

如果你这样写:

SELECT name 
FROM customer 
WHERE COALESCE(referee_id,null, 2) <> 2;

您还将只得到 'Zack',因为 coalesce 将返回不为 null 的第一个值,如果它们都为 null,它将返回 null。

Here您可以看到所有这 3 个示例在起作用,也许会有所帮助。

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(327)
对于虚拟Windows10计算机 VMwareFusionforMac没有Internet
上一篇
从列表中删除不可能的单词来解决 wordle
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(17条)