从特定行插入列并在MySQL中合并行

时间:2013-11-25 17:24:57

标签: mysql sql join

我有一个表(旧的WP导出postmeta表包含旧的自定义字段),需要组合多行并清理它们:

post_id | company | meta_key | meta_value
11111     AAA       street     boulevard 1
11111     AAA       tel        12345678
11111     AAA       email      info@aaa.com
11111     AAA       website    http://aaa.com
22222     BBB       street     boulevard 2
22222     BBB       tel        47334949
22222     BBB       email      info@bbb.com
22222     BBB       website    http://bbb.com

我需要它看起来如下:

newtable
post_id   company   street        tel      email         website
11111     AAA       boulevard 1   1234567  info@aaa.com  http://aaa.com
22222     BBB       boulevard 2   47334949 info@bbb.com  http://bbb.com

我查看了所有论坛帖子并尝试了几十种语法,没有工作,我找不到错误。我甚至尝试使用另一个表中的where条件运行插入语法,因为ID需要保持不变,例如:

INSERT INTO newtable (street) VALUES (meta_value) WHERE oldtable.meta_key = 'street' AND oldtable.meta_key = newtable.post_id

基本上某些字段需要成为列,并且需要将某些字段插入到这些字段中。

非常感谢任何提示或提示

1 个答案:

答案 0 :(得分:1)

SELECT company
     , MAX(CASE WHEN meta_key = 'email' THEN meta_value END) email 
     , MAX(CASE WHEN meta_key = 'street' THEN meta_value END) street
     , MAX(CASE WHEN meta_key = 'tel' THEN meta_value END) tel 
     , MAX(CASE WHEN meta_key = 'website' THEN meta_value END) website
  FROM eav 
 GROUP 
    BY company;