获取名称为第二个查询结果的列的值

时间:2017-08-07 19:48:05

标签: mysql mysqli

我有一张包含许多列的表格。每个代表它所代表的数据的特定“场景”。看起来像这样:

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

1 个答案:

答案 0 :(得分:0)

不,在一个查询中不可能。你能做的最好的是:

  • 使用两个查询
  • 从第一个查询结果中获取列名称
  • 根据这些列名称动态生成第二个查询

但是,如果您可以更改数据库设计,我建议将scenarios提取到单独的表中,并在第一个表中添加scenario_id,而不是使用不同的列,即:

id  |  scenario_id  | value
1   |       3       | 1200  
2   |       2       | 1400