【问题标题】:concatenate arbitrary long list of matches in SQL subquery在 SQL 子查询中连接任意长的匹配列表
【发布时间】:2013-10-18 23:50:14
【问题描述】:

想象一下 2 个表(相当愚蠢的例子,但为了简单起见,就这样吧)

words
  word_id

letters
  letter
  word_id

如何在选择属于某个单词的所有字母并将它们连接到所述单词时选择所有单词?重要的是要按照它们在表格中出现的顺序返回字母,因为字母可能会与其他单词混在一起,但顺序是正确的。

|word_id|    |word_id|letter|
+-------+    +-------+------+
|      1|    |      1|     H|
|      2|    |      2|     B|
             |      2|     Y|
             |      1|     I|
             |      2|     E|

应该返回

|word_id|word|
+-------+----+
|      1|  HI|
|      2| BYE|

有什么方法可以在纯 SQL 中完成此任务?

【问题讨论】:

    标签: sql firebird


    【解决方案1】:

    试试这个:

    SELECT word_id, group_concat (letter,'') FROM letters GROUP BY word_id;

    【讨论】:

    • Firebird 没有group_concat,而是有list(类似于group_concat
    • 那些引号必须是单引号',否则会抛出unknown column之类的错误,没有意义
    • 谢谢,会更新答案。 MySQL 不在乎。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 2012-01-17
    相关资源
    最近更新 更多