gpt4 book ai didi

mysql - 合并使用困惑

转载 作者:行者123 更新时间:2023-11-29 12:35:10 24 4
gpt4 key购买 nike

所以我在看这个question我试图弄清楚是否正确使用了合并作为答案。

INSERT INTO users (user_id, name)
SELECT 1 + coalesce((SELECT max(user_id) FROM users WHERE name='Bob'), 0), 'Bob';

如果这是问这个问题的错误方式,我深表歉意,但我没有足够的代表来评论那个 5 年前的帖子。我的困惑来自于在这个答案中使用合并。如果我的理解正确的话,Coalesce 会比较两个或更多列并从中获取第一个非空值。

该用户的问题是,如果值“Bob”不存在,那么他的 user_id 字段在插入时将为 0,这是他不希望看到的,因为它需要从 1 开始。

那么,我是否正确地理解合并,认为这里根本不需要合并,因为即使在答案中,他也简单地为第二个参数设置了 0。看起来这个例子中的 Coalesce 没有产生任何结果,真正的主力是“Select 1 + Select max()”。

我只是想理解合并的概念,因为我遇到了这个作为我遇到的问题的例子。

最佳答案

查询:

SELECT max(user_id) FROM users WHERE name='Bob'

如果没有“Bob”,将返回NULL

因此,在这种情况下,COALESCE() 用于返回 0 而不是 NULL,然后加 1 以获取下一个(如果存在)是“Bob”,如果没有,则为 1

您关于 COALESCE() 从值列表中获取第一个非空值的说法是正确的。

关于mysql - 合并使用困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26894057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com