我是一个有帮助的助手,可以为您进行翻译。以下是需要翻译的内容:
我正在努力组装正确的MySQL语句,并希望听取来自堆栈交换社区的建议。
我有这样一张表:
id | controller | sensor | data | time
1 | A | TEMP | 65 | 12:30
2 | A | SWITCH | 0 | 12:30
3 | A | TEMP | 66 | 12:31
4 | A | SWITCH | 1 | 12:31
5 | B | SWITCH | 1 | 12:31
6 | A | TEMP | 67 | 12:32
7 | A | SWITCH | 1 | 12:32
8 | B | SWITCH | 65 | 12:32
9 | A | TEMP | 68 | 12:33
10 | B | TEMP | 65 | 12:33
11 | A | SWITCH | 0 | 12:33
12 | B | TEMP | 65 | 12:34
13 | A | HUMID | 10 | 12:35
14 | B | HUMID | 10 | 12:35
我真正想做的是选出给定控制器中每个传感器具有最大时间的所有行。因此,如果我想要控制器A的结果,请参见此表:
9 | A | TEMP | 68 | 12:33
11 | A | SWITCH | 0 | 12:33
13 | A | HUMID | 10 | 12:35
对于给定控制器的每个传感器,选择具有该传感器最长时间的一个项目。
目前最好的陈述是:
SELECT * FROM table WHERE time = (SELECT MAX(time) FROM table WHERE sensor = "TEMP" and controller = "A")
但我只能得到一个传感器(显然),而且我不确定如何获取我想要的内容。我几乎需要像for循环一样迭代每个sensor = *和controller = A,以找到最大时间,但我不知道如何实现。非常感谢您的反馈。