mysql从动态格式化的列名获取结果
我必须从另一列的数据生成的列中获取结果。我将用以下例子解释: 数据库中的列名: 月份| am1 | am2 | am3 | am4 | am5 | am6 | am7 | am8 | am9 | am10 | am11 | am12 我希望在查询中从以mysql从动态格式化的列名获取结果,mysql,Mysql,我必须从另一列的数据生成的列中获取结果。我将用以下例子解释: 数据库中的列名: 月份| am1 | am2 | am3 | am4 | am5 | am6 | am7 | am8 | am9 | am10 | am11 | am12 我希望在查询中从以am+months value开头的列中获取值 我目前的查询是: $query = 'select id, iid, contractnumber, concat("am",`months`) as amount from c
am
+months value开头的列中获取值
我目前的查询是:
$query = 'select id, iid, contractnumber, concat("am",`months`) as amount from credits where iid > 0';
但这并不是返回特定am..
列的值(71),而是返回列名,例如am5
如何直接访问列am5
谢谢你抽出时间 这是一个糟糕的设计,您应该更改它,但如果您得到的是这样的设计,您可以使用
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
如果我要去那里,我不会从这里开始:-(是否要修复您的设计?现在,您应该只运行两个查询。首先从
months
中获取值。然后用您的应用程序语言编写第二个查询的列名。但我已经听到有人键入一个巨大而难看的CASE语句作为答案;-)感谢slaakso,一开始它的工作例外双选择,什么表格设计更有效?如果你必须在表格中为每个月保存金额,请将月份放在单独的表格中。不确定表的逻辑是什么,因此不能更具体。