我有3张桌子

http://sqlfiddle.com/#!2/df3e6/10

我的愿望是使用t2的名称字段作为t3的列名称

我的最终目标是:

---------------------------------
| ID | NAME  | AMOUNT | PRODUCT |
---------------------------------
| 1  | name1 |    1   | potato  |
| 2  | name2 |   20   | fruit   |
---------------------------------


这是可行的还是在查询后我必须以这种方式“分类”?

最佳答案

根据name值透视结果。

SELECT
  `t1`.*
  , max( case when `t2`.`name` = 'amount' then `t3`.`value`
              else null
         end ) as 'Amount'
  , max( case when `t2`.`name` = 'product' then `t3`.`value`
         else null
         end ) as 'Product'
FROM `t1`
  LEFT JOIN `t3`
    ON `t1`.`id` = `t3`.`t1_id`
  LEFT JOIN `t2`
    ON `t2`.`id` = `t3`.`t2_id`
  GROUP BY `t1`.`id`


演示@ MySQL 5.5.32 Fiddle

关于mysql - 将一个表中字段的值用作另一表中字段的列名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23286219/

10-11 05:14