我有一张包含许多列的表格。每个代表它所代表的数据的特定“场景”。看起来像这样:
id | col1 | col2 | col3 | col4 | col5
---+--------+--------+--------+---------+---------
1 | 1200 | 100 | 1200 | 10000 | 1300
2 | 100 | 1400 | 2300 | 1200 | 900
3 | 3300 | 1200 | 400 | 600 | 12000
我有另一个存储实体的表和一个存储此权限的默认方案的列。看起来像这样:
id | city | state | default_scenario
---+------------+-------+-------------------
1 | Miami | FL | col3
2 | Detroit | MI | col2
3 | New York | NY | col1
我想从第二个表中获取结果,并根据行的default_scenario
返回第一个表中的值,作为结果中的额外列。
我认为可以使用JOIN
完成此操作但是如何在不使用PHP的情况下在同一查询中使用行的值作为另一行的列名?
这甚至可能吗?
编辑:
我想要的查询会返回:
id | city | state | default_scenario | scenario_data
---+------------+-------+------------------+---------------
1 | Miami | FL | col3 | 1200
2 | Detroit | MI | col2 | 1400
3 | New York | NY | col1 | 3300
答案 0 :(得分:0)
不,在一个查询中不可能。你能做的最好的是:
但是,如果您可以更改数据库设计,我建议将scenarios
提取到单独的表中,并在第一个表中添加scenario_id
,而不是使用不同的列,即:
id | scenario_id | value
1 | 3 | 1200
2 | 2 | 1400