Mysql查询行到列,但列由meta_键分隔
我有这样一个itemmeta表:Mysql查询行到列,但列由meta_键分隔,mysql,Mysql,我有这样一个itemmeta表: item_id meta_key meta_value 1 variation_id 123 1 qty 3 2 variation_id 100 2 qty 2 3 variation_id 123 3 qty 4 我需要的是: 1
item_id meta_key meta_value
1 variation_id 123
1 qty 3
2 variation_id 100
2 qty 2
3 variation_id 123
3 qty 4
我需要的是:
123 7
100 2
我可以使用子查询执行我想要的操作,如:
SELECT DISTINCT m1.meta_value AS variation_id,
( SELECT SUM(m2.meta_value)
FROM itemmeta m2
WHERE m2.meta_key='qty' AND m1.item_id = m2.item_id ) AS qty
FROM itemmeta m1
WHERE m1.meta_key = 'variation_id'
但我想知道有没有更好、更简单或更有效的解决方案
谢谢大家! 下面是如何使用连接进行连接
select m.meta_value, sum(m2.meta_value)
from itemmeta m
join itemmeta m2
on m.item_id = m2.item_id and m.meta_key = 'variation_id' and m2.meta_key = 'qty'
group by m.meta_value;
虽然这不是最快的方法
SELECT variation_id
, SUM(qty) qty
FROM
( SELECT MAX(CASE WHEN meta_key = 'variation_id' THEN meta_value END) variation_id
, MAX(CASE WHEN meta_key = 'qty' THEN meta_value END) qty
FROM my_table
GROUP
BY item_id
) x
GROUP
BY variation_id;
请将您的数据复制为文本,我们无法从图像复制/粘贴。这种子查询可以重写为与group by的常规联接。