SQL 如何使用响应值将具有相同 post_id 的多行合并为一个来创建列

SQL How to combine multiple rows with same post_id into one using response values to create columns

我很确定我的问题有非常简单的解决方案并且之前在某个地方被问过,所以我相信你帮助我没什么大不了的。

首先我有疑问:

SELECT * 
FROM wp_postmeta 
WHERE post_id = 340 
AND (
     meta_key = '_regular_price' 
     OR meta_key = 'multiplier' 
     OR meta_key = 'multiplier_filter' 
     OR meta_key = 'price_filter' 
     OR meta_key = 'attribute_size' 
     OR meta_key = 'live_update'
    );

正如您所看到的,我使用 wordpress,这里的一切都正常,但我想更改对响应的解释。

现在看起来像:

meta_id post_id meta_key meta_value
8197 200 price 100
9209 200 filter 2
9208 200 update true

但如果它开始以这种格式给出响应将是理想的:

post_id price filter update
200 100 2 true

使用数据透视查询:

SELECT post_id,
       MAX(CASE WHEN meta_key = 'price'  THEN meta_value END) AS price,
       MAX(CASE WHEN meta_key = 'filter' THEN meta_value END) AS filter,
       MAX(CASE WHEN meta_key = 'update' THEN meta_value END) AS `update`
FROM yourTable
GROUP BY post_id;