SQL 将 2 个表合并在一列中,以逗号分隔

Posted

技术标签:

【中文标题】SQL 将 2 个表合并在一列中,以逗号分隔【英文标题】:SQL combine 2 tables in one column sepataring by comma 【发布时间】:2021-05-13 13:51:33 【问题描述】:

您好,我的 SQL 查询有问题,我想将 2 个表 5 列组合并用逗号分隔,下面我发布表的外观。

在示例中:

名称:长度,j1:mm,j2:cm,j3:NULL,j4:m

名称:大小,j1:NULL,j2:NULL,j3:NULL,j4:NULL;

查询后的结果我想要这样的:

如果在行中我发现 NULL 我们应该返回“-”

我正在尝试 Concat,但我不知道如何返回 - 如果我找到空白行

【问题讨论】:

我删除了 Oracle 标签,因为它看起来像“奇怪的人”。 【参考方案1】:

我想你想要coalesce()concat_ws()。像这样的:

select concat_ws(',',
                 coalesce(name, '-'),
                 coalesce(j1, '-'),
                 coalesce(j2, '-'),
                 coalesce(j3, '-'),
                 coalesce(j4, '-')
                )
from t1 left join
     t2
     using (t2_id)

【讨论】:

顺便问一下你知道用n列的方法吗?例如,我有从 1 到 100 的“j” @godislikemyquestionsrets 。 . .只需重复表达式(您可以使用电子表格来创建代码)。如果您有 100 个这样的列,听起来您的数据模型有问题。这些值可能应该在行中。

以上是关于SQL 将 2 个表合并在一列中,以逗号分隔的主要内容,如果未能解决你的问题,请参考以下文章

读取所有列合并为一个的csv文件:千位逗号问题

MYSQL列中的数据以逗号隔开,如何查询?

MYSQL列中的数据以逗号隔开,如何查询?

SQL如何将某一列中相同的数据合并

如何通过逗号分隔将 2 行合并为一行?

sql 合并表以逗号分隔