Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL将多行压缩为一行_Mysql_Stored Procedures_Concat - Fatal编程技术网

MySQL将多行压缩为一行

MySQL将多行压缩为一行,mysql,stored-procedures,concat,Mysql,Stored Procedures,Concat,我有一个查询返回多行,如MySQL中的以下行: attribute_name value ---------------------------------------- username emailuser domain mydomain.com 我需要的输出如下: username domain ----------------------------- emailuser mydomain.com 当前SQL: SELE

我有一个查询返回多行,如MySQL中的以下行:

attribute_name  value
----------------------------------------
username          emailuser
domain          mydomain.com
我需要的输出如下:

username       domain
-----------------------------
emailuser     mydomain.com
当前SQL:

    SELECT pa2.attribute_name, upa2.value
      FROM product p

INNER JOIN product_attribute pa ON p.product_id = pa.product_id
       AND pa.attribute_name = 'alias'

INNER JOIN user_product_attribute upa ON pa.product_attribute_id upa.product_attribute_id

INNER JOIN user_product_attribute upa2 ON upa.user_product_id = upa2.user_product_id

INNER JOIN product_attribute pa2 ON pa2.product_attribute_id = upa2.product_attribute_id
    AND pa2.attribute_name
    IN (
    'username', 'domain'
    )

WHERE p.product_name = 'email'
AND upa.value = 'emailalias@domainalias'

我一直在关注group_concat,但我认为这是一条错误的道路。。有什么建议吗?

小组讨论没有问题。下面的查询速度会很慢,但对于一个小表来说,这可能并不重要

SELECT 
GROUP_CONCAT(IF(`attribute_name`='username', `value`,'')) AS `username`,
GROUP_CONCAT(IF(`attribute_name`='domain', `value`, '')) AS `domain`,
FROM (your old table or the select query)
GROUP BY `attribute_name` 

我想你已经有了答案。只需将第一行修改为:
选择upa1.value作为用户名,upa2.value作为域
嘿,乔,谢谢你再次查看我的一个问题。。upa1用于撤回与别名匹配的valies。。upa2将用户名和域作为两个单独的行返回。感谢您的回答,非常感谢。。我不知道你可以用这样的条件语句。。我可能不得不寻找一种更快的方法,但我相信这会让我走上正轨。。