【问题标题】:"Group" Datatype, group_concat without a "group"“组”数据类型,没有“组”的 group_concat
【发布时间】:2021-12-29 14:07:29
【问题描述】:

对于group_concatMySQL 手册说:

此函数返回一个字符串结果,其中包含来自组的连接的非 NULL 值。

group 在这种情况下似乎是某种数据类型。是否可以手动创建这种数据类型?

例如,我在一个表中有 onetwo,我想检索这两个值分隔为 CSV:

select group_concat(column) from table group by column

这连接

'one', 'two'

不过,正如预期的那样:

select group_concat('one', 'two');

返回:

'onetwo'

好像只是concat

【问题讨论】:

  • GROUP_CONCAT 与 CONCAT 类似,不同之处在于 CONCAT 用于跨列组合值,而 GROUP_CONCAT 函数主要用于跨行连接值。
  • concat concats 没有分隔符,它不仅仅适用于列。例如concat('some string', some_column, 'another string', 123)。 “行”部分是我试图模仿的。例如在 PHP 中,我可以执行 [['row1', 'field2'], ['row2', 'field2']],这将获得类似的结果集(缺少索引,但对于演示认为它有效)。

标签: mysql concatenation group-concat


【解决方案1】:

组不是数据类型。在这种情况下,它指的是一组行,由您在GROUP BY 子句中命名的列中具有相同值的行定义。

具有多个参数的

GROUP_CONCAT() 的作用类似于 CONCAT(),如上面的 cmets 中所述。也就是说,多个参数被连接成一个字符串。

您似乎想用逗号分隔符连接多个参数,而不是从一组行中获取值。为此,您可以使用 MySQL 的字符串函数CONCAT_WS()

select concat_ws(',', 'one', 'two') as my_list;

+---------+
| my_list |
+---------+
| one,two |
+---------+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2021-09-05
    • 2014-09-02
    相关资源
    最近更新 更多