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;
我很确定我的问题有非常简单的解决方案并且之前在某个地方被问过,所以我相信你帮助我没什么大不了的。
首先我有疑问:
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;