【发布时间】:2020-09-28 14:59:59
【问题描述】:
我正在尝试根据变量的值从同一个 MySQL 请求中提取两个变量。我可以在两个单独的查询中提取这些变量,但我确信必须可以将它们组合起来以在单个语句中生成两个 / 列数据,也许可以使用 if 语句?
我有一个 JOIN 语句,这有点让我有点吃惊。
第一个请求:
SELECT variables.value as "Mean Power"
FROM variables
INNER JOIN stat_types ON variables.id=stat_types.id
WHERE stat_types.name="Mean";
第二个请求:
SELECT variables.value as "Maximum Power"
FROM variables
INNER JOIN stat_types ON variables.id=stat_types.id
WHERE stat_types.name="Max";
唯一改变的是 stat_type 名称从 Max 更改为 Mean,我想相应地更改输出列名称。
这两个请求的结果数量总是相同的。 您能提供的任何帮助都会很棒!
编辑: 我应该明确表示我是在两个时间序列之后,而不是单个最大值。我现在最接近的是使用下面建议的代码,稍微编辑如下:
SELECT
v.id,
(CASE WHEN st.name = 'Mean' THEN v.value END) AS `Mean Power`,
(CASE WHEN st.name = 'Max' THEN v.value END) AS `Maximum Power`
FROM variables v
INNER JOIN stat_types st
ON v.id = st.id
WHERE
st.name = IN ('Mean', 'Max')
这给出了:
|id|Mean Power| Maximum Power|
|1 |NULL |9010 |
|1 |NULL |8999 |
|1 |NULL |9011 |
|2 |9053 |NULL |
|2 |9040 |NULL |
|2 |9045 |NULL |
太好了。但是,我想要这个:
|Mean Power| Maximum Power|
|9053 |9010 |
|9040 |8999 |
|9045 |9011 |
所以我需要结合功率值,我不需要 id 作为输出。对于每个值,我还有一个时间步长,如有必要可以使用。每个时间步都有一个最大值和平均值(相同数量的值) 谢谢!
【问题讨论】: