MySQL - 合并具有不同 where 语句的行

MySQL - Combine rows with different where statements

我有两个 MySQL 查询要合并。

SELECT DEVICE as Room, VALUE as Temperature FROM `current` WHERE `READING` LIKE 'temperature'
SELECT DEVICE as Room, VALUE as Humidity    FROM `current` WHERE `READING` LIKE 'humidity'

我的数据 Table 如下所示:

DEVICE VALUE READING
Arbeitszimmer 52 humidity
Arbeitszimmer 22 temperature
Aussen 88 humidity
Aussen 1.8 temperature

期望的结果应该是:

Room Temperature Humidity
Arbeitszimmer 22 52
Aussen 1.8 88

我正在为 SQL 查询而苦恼。

简单的自连接应该可以工作

SELECT c1.DEVICE as Room, c1.VALUE as Temperature, c2.VALUE as Humidity  
FROM `current` c1 
    join `current` c2 on c1.device = c2.device 
        and c1.`READING` = 'temperature'
        and c2.`READING` = 'humidity'

顺便说一句,没有必要使用 like

如果您只有两类值,您将使用具有相同值的联接 table

select a.device, a.value temp, b.value humidity
from current a  
inner join current a.device = b.device 
    and a.reading = 'temperature'
        and b.reading = 'humidity'

一些条件聚合来调整阅读指标。

SELECT `DEVICE` as Room
, MAX(CASE WHEN `READING` = 'temperature' THEN `VALUE` END) as Temperature
, MAX(CASE WHEN `READING` = 'humidity' THEN `VALUE` END) as Humidity
FROM `current` 
WHERE `READING` IN ('temperature', 'humidity') 
GROUP BY `DEVICE`
ORDER BY `DEVICE`