当前位置: 首页 > 面试题库 >

使用SQL将多个字段合并为一个

李康安
2023-03-14
问题内容

我有三个表tagpagepagetag

与下面的数据

ID      NAME
1       page 1
2       page 2
3       page 3
4       page 4

标签

ID      NAME
1       tag 1
2       tag 2
3       tag 3
4       tag 4

页面标签

ID   PAGEID  TAGID
1    2        1
2    2        3
3    3        4
4    1        1
5    1        2
6    1        3

我想在一个查询中获得一个包含SQL每一页的对应标签名的字符串。这是我想要的输出。

ID      NAME       TAGS
1       page 1     tag 1, tag 2, tag 3
2       page 2     tag 1, tag 3
3       page 3     tag 4
4       page 4

SQL可能吗?

我正在使用MySQL。尽管如此,如果可能的话,我希望有一个独立于数据库供应商的解决方案


问题答案:

塞尔吉奥·德尔阿莫(Sergio del Amo):

但是,我没有没有标签的页面。我想我需要用左外部联接编写查询。

SELECT pagetag.id, page.name, group_concat(tag.name)
FROM
(
    page LEFT JOIN pagetag ON page.id = pagetag.pageid
)
LEFT JOIN tag ON pagetag.tagid = tag.id
GROUP BY page.id;

不是一个非常漂亮的查询,但应该给你想要的东西-pagetag.id而且group_concat(tag.name)null在你上面贴的例子4页,但页面将在结果出现。



 类似资料:
  • 问题内容: 我们有些SQL杂语。说我有一个看起来像这样的结果… 61E77D90-D53D-4E2E-A09E-9D6F012EB59C | A 61E77D90-D53D-4E2E-A09E-9D6F012EB59C | B 61E77D90-D53D-4E2E-A09E-9D6F012EB59C | C 61E77D90-D53D-4E2E-A09E-9D6F012EB59C | D 7ce9

  • 我在同一个excel表中有3000个类似于这些表的表: PS:我只需要csv表中指定的信息

  • 问题内容: 我有一个带有2 ArrayType字段的PySpark DataFrame: 我想将它们合并为一个ArrayType字段: 适用于字符串的语法在这里似乎不起作用: 谢谢! 问题答案: 火花 > = 2.4 您可以使用功能(SPARK-23736): 要保留其中一个值时的数据,可以使用: 火花 <2.4 不幸的是,一般情况下要串联列,您将需要一个UDF,例如: 可以用作:

  • 假设我已将以下对象序列化为json字符串: 现在我想反序列化它,但是我想把名称分成两个字段,和。我该怎么做呢? 我希望最终的结果是类似于: 这对Gson有可能吗?

  • 我把这三门课分别放在不同的文件中 我有下面的映射器 这目前仅映射lastName并起作用,我想将Book中的作者字符串映射为 我怎么能这么做?我在MapStruct文档中找不到任何东西。

  • 但问题是.value导致任务在我的任务运行之前就被评估,因此它们无法获得新的目标设置(如另一个问题中所述:如何从我的SBT任务中调用另一个任务?)