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`
我有两个 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`