MySQL将多个列合并为一个临时的'柱

时间:2016-04-07 20:20:09

标签: mysql sql merge multiple-columns temporary

我很好奇这个事实,如果可以将多个列(用逗号或其他东西分隔)合并到一列中。

所以,例如,我有这些表(语言):

language_id    |   language_iso  
    1                   NL
    2                   EN
    3                   GT
    4                   EN

(域)

domain_id    |   domain_name  
    1                example

另一个将语言链接到webdomain的表

languagetodomain_id    |   languagetodomain_lang    |   languagetodomain_domain
    1                               1                            1
    2                               2                            1
    3                               4                            1
    4                               3                            1

按此顺序检索它们(一列作为提醒)

domain_id    |   domain_name    | TemporaryColumn
    1                example         {1,2,4,3}

2 个答案:

答案 0 :(得分:2)

这应该有效:

SELECT Domains.*, CONCAT('{',GROUP_CONCAT(languagetodomain_lang),'}') AS TemporaryColumn
FROM Domains
JOIN LanguageToDomain ON LanguageToDomain.languagetodomain_domain = Domains.domain_id
GROUP BY domain_id

函数GROUP_CONCAT对用逗号分隔它们的值进行分组。我使用普通CONCAT函数添加了括号。 您需要对domain_id进行分组,以便为​​您拥有的每个域获取所有languagetodomain_lang

我已经猜到了languagetodomain的表名,因为你没有提供它。

答案 1 :(得分:0)

拼写出来:

Group_Concat允许您跨行组合数据。

app.service('getBodyStyle', function () {
  var self = this;

  if (!self.bg)
  {
      var bgs = [ 
        //list of jpgs
      ]
      var rand = Math.floor(Math.random() * bgs.length);
      var bg   = bgs[rand];

      self.bg = { "background": "linear-gradient(rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.4)), url('./Images/"+bg+"') no-repeat center center fixed" };
  }
  return self.bg;
});