如何在php mysql中将列数据转换为行
这基本上是为了测试一个地址簿php应用程序。 这是我从SQL查询得到的输出。我想将此结果转换为一行 MySQL查询输出 输出寻找如何在php mysql中将列数据转换为行,php,mysql,lamp,addressbook,Php,Mysql,Lamp,Addressbook,这基本上是为了测试一个地址簿php应用程序。 这是我从SQL查询得到的输出。我想将此结果转换为一行 MySQL查询输出 输出寻找 尝试以下查询。假设posteta是一个表名 select a.contact_id,b.meta_value,c.meta_value,d.meta_value,e.meta_value from postmeta a join postmeta b on (a.contact_id=b.contact_id and b.meta_date='First_Name
尝试以下查询。假设posteta是一个表名
select a.contact_id,b.meta_value,c.meta_value,d.meta_value,e.meta_value
from postmeta a
join postmeta b on (a.contact_id=b.contact_id and b.meta_date='First_Name')
join postmeta c on (a.contact_id=c.contact_id and c.meta_date='Last_Name')
join postmeta d on (a.contact_id=d.contact_id and d.meta_date='Primary_Email')
join postmeta e on (a.contact_id=e.contact_id and d.meta_date='Primary_Phone')
查询
您可以显示查询吗?从contacts中选择meta_关系。contact_id,contact_meta.id,contact_meta.meta_数据,contact_meta.meta_值,contact_meta,meta_关系,其中contacts.id=meta_关系。owner_id和meta_关系。meta_id=contact_meta.id和contacts.id=1它将使用一个简单的光标和临时表。您在查询中提到了3个表,请同时提及该表的结构。。
SELECT contact_id,
MAX(First_name) AS First_name,
MAX(Last_Name) AS Last_Name,
MAX(Primary_Email) AS Primary_Email,
MAX(Primary_phone) AS Primary_phone
FROM (
SELECT MIN(contact_id) as contact_id,
CASE WHEN meta_data='First_Name' THEN meta_value END AS First_Name,
CASE WHEN meta_data='Last_Name' THEN meta_value END AS Last_Name,
CASE WHEN meta_data='Primary_Email' THEN meta_value END AS Primary_Email,
CASE WHEN meta_data='Primary_phone' THEN meta_value END AS Primary_phone
FROM tbl
GROUP BY contact_id,meta_data,meta_value
) t
GROUP BY contact_id