【发布时间】:2014-11-12 18:35:29
【问题描述】:
所以我在看这个question,我想弄清楚是否正确使用了 Coalesce 作为答案。
INSERT INTO users (user_id, name)
SELECT 1 + coalesce((SELECT max(user_id) FROM users WHERE name='Bob'), 0), 'Bob';
如果这是问这个问题的错误方式,我深表歉意,但我没有足够的代表来评论那个 5 岁的帖子。我的困惑源于在这个答案中使用 Coalesce。如果我理解正确,Coalesce 会比较两列或更多列并从中获取第一个 NON Null 值。
这个用户的问题是,如果一个值不存在,'Bob',那么他的 user_id 字段在插入时将为 0,这是他不想要的,因为它需要从 1 开始。
所以我是否正确理解合并认为这里根本不需要考虑到即使在答案中他简单地为第二个参数输入了 0。似乎这个例子中的 Coalesce 没有产生任何结果,真正的工作马是“Select 1 + Select max()”。
再次,我只是想了解 Coalesce 的概念,因为我遇到了这个问题作为我遇到的问题的示例。
【问题讨论】: