将重复值添加到原始值

时间:2012-08-07 08:19:33

标签: mysql

我有一个包含6个列字段的表。如果有重复的电子邮件,则根据第二列中的日期选择较新的记录,并从该行中获取除F列(第6列)以外的所有数据,并合并所有记录中的值 所以例如,如果有

应合并这两行数据:

s@s.com 15/12/2012 122 dd34 23ds3 This data
s@s.com 12/12/2012 123 dd35 232d2 Should be combined

结果应为:

s@s.com 15/12/2012 122 dd34 23ds3 This data Should be combined

2 个答案:

答案 0 :(得分:2)

SELECT
  email, date, column_c, column_d, column_e,
  GROUP_CONCAT(column_f SEPARATOR ' ') AS column_f
FROM (
  SELECT *
  FROM tablename
  ORDER BY date
) i
GROUP BY email
  HAVING date = MAX(date)

See it working

答案 1 :(得分:0)

如果您仍然缺少数据,我会尝试以下操作...我的预查询是为每封电子邮件提供最新日期。然后,加入测试表,只按每个电子邮件的日期获取“第一条记录”的详细信息......然后通过电子邮件加入所有其他记录并使小组连续。

select
      FirstRec.Email,
      FirstRec.Date,
      FirstRec.Column_C,
      FirstRec.Column_D,
      FirstRec.Column_E,
      GROUP_CONCAT( BySameEmail.Column_F SEPARATOR ' ' ) as Column_F
   from
      ( select
              email, max( date ) Newest
           from
              test_Table
           group by 
              email ) PQ
         JOIN Test_Table FirstRec
            on PQ.EMail = FirstRec.EMail
           AND PQ.Newest = FirstRec.Date
         JOIN Test_Table BySameEMail
            on PQ.EMail = BySameEMail.EMail
   group by
      FirstRec.EMail

我从Dave的回帖中提供了来自SQL Fiddle样本数据的所有3封电子邮件。