Mysql查询行到列,但列由meta_键分隔

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

我有这样一个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
我需要的是:

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的常规联接。