gpt4 book ai didi

mysql - 为什么 MySQL GROUP_CONCAT 在有一些非 NULL 值时返回 NULL

转载 作者:行者123 更新时间:2023-11-29 07:36:21 29 4
gpt4 key购买 nike

下面是一些示例代码:

CREATE TABLE test (
first_name VARCHAR(255),
last_name VARCHAR(255)
);
INSERT INTO test (first_name) VALUES ('first_1');
INSERT INTO test (last_name) VALUES ('last_1');

SELECT GROUP_CONCAT(first_name, last_name) FROM test;
SELECT GROUP_CONCAT(first_name), GROUP_CONCAT(last_name) FROM test;

第一个 select 返回 null,而 MySQL documentation声明如果没有非 NULL 值则返回 null。 Here是一个演示。

最佳答案

这个结果是意料之中的。考虑第一个查询:

SELECT GROUP_CONCAT(first_name, last_name) FROM test;

因为每条记录的名字或姓氏都有一个 NULL,所以您要连接一个 NULL 值,然后聚合该 NULL ,也产生 NULL。要更好地理解此行为,请运行查询 SELECT CONCAT('Hello', NULL) FROM dual 并观察输出为 NULL

然而,在第二个查询中:

SELECT GROUP_CONCAT(first_name), GROUP_CONCAT(last_name) FROM test;

您正在对各个 进行分组连接。在这种情况下,NULL 值将被忽略,您将留下非NULL 名字和姓氏的单独值。

用图解的方式,我们可以画出如下图:

first_name | last_name | CONCAT (first_name, last_name)
first_1 | NULL | NULL
NULL | last_1 | NULL
--------------------------------
first_1 | last_1 | NULL <-- GROUP_CONCAT of columns

您可以看到 GROUP_CONCAT 跨记录的行为与其他聚合函数一样,忽略 NULL 值。但是在 中,GROUP_CONCAT 将首先进行串联,即使有一个值是 NULL 也会导致 NULL

关于mysql - 为什么 MySQL GROUP_CONCAT 在有一些非 NULL 值时返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48577319/

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