Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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_Sql - Fatal编程技术网

MySQL-将具有特定字符串的行放入列中

MySQL-将具有特定字符串的行放入列中,mysql,sql,Mysql,Sql,我想得到4个结果,通常在4行中返回,而在2行中返回 我有一个疑问: SELECT meta_key, meta_value, t.post_date_gmt FROM (SELECT * FROM dr_posts JOIN dr_postmeta ON post_id = ID WHERE post_author = 2 AND post_type ='donation') AS t WHERE meta_key = '_donation_amount' OR meta_key= '_ano

我想得到4个结果,通常在4行中返回,而在2行中返回

我有一个疑问:

SELECT meta_key, meta_value, t.post_date_gmt FROM (SELECT * 
FROM dr_posts
JOIN dr_postmeta ON post_id = ID
WHERE post_author = 2
AND post_type ='donation') AS t WHERE meta_key = '_donation_amount' OR meta_key= '_anonymous_donation'
返回:

=======================================================
|       meta-key       |  meta-value  | post_date_gmt |
=======================================================
| _anonymous_donation  |       0      |   2015-03-01  |
|   _donation_amount   |       10     |   2015-03-01  |
| _anonymous_donation  |       0      |   2015-03-02  |
|   _donation_amount   |       15     |   2015-03-02  |
_______________________________________________________
我真正想要的(列名并不重要,只是结果):

如何做到这一点?我读到我需要使用PIVOT,但我不确定这是否是我真正需要的。

我认为这可能会有所帮助

select min(meta-value) as  _anonymous_donation,
       max(meta-value) as _donation_amount,
       post_date_gmt  
from table
group by post_date_gmt

我认为这个查询应该满足您的要求:

select 
    max(case when meta_key =  '_anonymous_donation' then meta_value end) as '_anonymous_donation',
    max(case when meta_key =  '_donation_amount' then meta_value end) as '_donation_amount',
    post_date_gmt
from (SELECT * 
    FROM dr_posts
    JOIN dr_postmeta ON post_id = ID
    WHERE post_author = 2
    AND post_type ='donation'
    ) AS t
WHERE meta_key = '_donation_amount' OR meta_key= '_anonymous_donation'
group by post_date_gmt

“示例表数据会让一切变得更清晰。@jarlh,您想要什么样的示例数据?请尝试提供一些示例数据,例如在运行查询时所拥有的数据中。
select 
    max(case when meta_key =  '_anonymous_donation' then meta_value end) as '_anonymous_donation',
    max(case when meta_key =  '_donation_amount' then meta_value end) as '_donation_amount',
    post_date_gmt
from (SELECT * 
    FROM dr_posts
    JOIN dr_postmeta ON post_id = ID
    WHERE post_author = 2
    AND post_type ='donation'
    ) AS t
WHERE meta_key = '_donation_amount' OR meta_key= '_anonymous_donation'
group by post_date_gmt