mysql从动态格式化的列名获取结果

时间:2019-03-16 18:01:35

标签: mysql

我必须从列中获取结果,该名称由另一列中的数据生成。我将通过以下示例进行说明:

数据库中的列名称:

个月| am1 | am2 | am3 | am4 | am5 | am6 | am7 | am8 | am9 | am10 | am11 | am12

enter image description here

我想在查询中从以am开头的列中获取值+月值 我当前的查询是:

$query = 'select id, iid, contractnumber, concat("am",`months`) as amount from credits where iid > 0';

但是此方法不是返回特定am..列的值(71),而是返回列名,例如am5

如何直接访问列am5的值

谢谢您的时间!

1 个答案:

答案 0 :(得分:1)

这是一个糟糕的设计,您应该对其进行更改,但是如果您得到的是这样,则可以使用CASE

select id, iid, contractnumber,
  case months
  when 1 then am1
  when 2 then am2
  when 3 then am3
  when 4 then am4
  when 5 then am5
  when 6 then am6
  when 7 then am7
  when 8 then am8
  when 9 then am9
  when 10 then am10
  when 11 then am11
  when 12 then am12
  end as amount
from credits 
where iid > 0