【问题标题】:Remapping/Concatenating in SQLSQL 中的重新映射/连接
【发布时间】:2010-09-22 07:46:58
【问题描述】:

我正在尝试使用 SQL 对一组结果进行重新排序/分组。我有一些字段(例如,已将其重命名为不太具体的内容),并且每个逻辑记录组都有一个保持不变的字段 - 地址字段。每个地址也有一些字段,每个地址都是相同的。

id  forename    surname     address
1   John        These       Address1
2   Lucy        Values      Address1
3   Jenny       Are         Address1
4   John        All         Address2
5   Lucy        Totally     Address2
6   Jenny       Different   Address2
7   Steve       And         Address2
8   Richard     Blah        Address2

address     John    Lucy            Jenny       Steve       Richard
Address1        These   Values          Are         (null)      (null)
Address2        All     Totally         Different   And         Blah

例如:John、Lucy、Jenny、Steve 和 Richard 是每个地址中唯一可能的名字。我知道这一点,因为它存储在另一个位置。

我可以从左侧图像中的实际记录中选择值,然后像右侧那样将它们作为结果集返回吗?如果有什么不同,我会使用 MySQL。

【问题讨论】:

  • 你能准确地说出你真正想做的事情吗?

标签: sql mysql concatenation


【解决方案1】:

假设列标题“john”、“lucy”等是固定的,您可以按地址字段分组并使用 if() 函数结合聚合运算符来获取结果:

select max(if(forename='john',surname,null)) as john,
       max(if(forename='lucy',surname,null)) as lucy,
       max(if(forename='jenny',surname,null)) as jenny,       
       max(if(forename='steve',surname,null)) as steve,       
       max(if(forename='richard',surname,null)) as richard,
       address
from tablename 
group by address;

虽然有点脆。

还有 group_concat 函数可用于(在限制范围内)执行类似操作,但它会按行排序,而不是按您的要求按列排序。

例如。

select address, group_concat( concat( forename, surname ) ) tenants 
from tablename
group by address;

【讨论】:

    【解决方案2】:

    我不确定,但我认为你想要做的是 GROUP BY。

    SELECT Address,Name FROM Table GROUP BY Name
    

    如果您想选择更多列,请确保它们包含在 GROUP BY 子句中。此外,您现在可以执行聚合函数,例如 MAX() 或 COUNT()。

    【讨论】:

      【解决方案3】:

      我不确定这个问题,但据我了解你可以做什么:

      SELECT concat(column1,column2,column3) as main_column, address from table;
      

      【讨论】:

        猜你喜欢
        • 2012-01-06
        • 2017-10-13
        • 1970-01-01
        • 2014-02-14
        • 1970-01-01
        • 2015-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多