Having a table as below:
meta_id | post_id | meta_key | meta_value |
---|---|---|---|
000001 | 1 | name1 | Sam |
000002 | 1 | tel1 | 12345678 |
000003 | 1 | name2 | Jackie |
000004 | 1 | tel2 | 23456789 |
000005 | 2 | name1 | David |
000006 | 2 | tel1 | 11111111 |
000007 | 2 | name2 | Mary |
000008 | 2 | tel2 | 22222222 |
And want the result to be:
post_id | name1 | tel1 | name2 | tel2 |
---|---|---|---|---|
1 | Sam | 12345678 | Jackie | 23456789 |
2 | David | 11111111 | Mary | 22222222 |
(Using MySQL on WordPress Database)
CodePudding user response:
You need to pivot your rows in the group.
select post_id,
max(case when meta_key = 'name1' then meta_value end) name1,
max(case when meta_key = 'tel1' then meta_value end) tel1,
max(case when meta_key = 'name2' then meta_value end) name2,
max(case when meta_key = 'tel2' then meta_value end) tel2
from tbl
group by post_id
Look at this fiddle.