0

我有一个查询

SELECT ckt, setpt, clock FROM progs 
WHERE feed = "80302" AND day=4 AND clock<"12:15:00" 
ORDER BY ckt, clock DESC

这让我明白了:

ckt setpt clock
0 69  06:06:00
0 62  00:30:00
1 57  10:30:00
1 67  04:30:00
1 57  01:30:00
2 69  11:00:00
2 62  00:30:00

我如何修改这个查询来给我每个 CKT 的 MAX(clock)

总计:每个cktday有多个setptclock entries。我正在寻找(1 或无)clock记录 < some_time for each cktand day。IE

0 69  06:06:00
1 67  10:30:00
2 69  11:00:00

在mysql中。

4

2 回答 2

4

像这样的东西?

SELECT ckt, MAX(setpt), MAX(clock)
FROM progs 
WHERE feed = "80302" AND day=4 AND clock<"12:15:00" 
GROUP BY ckt
ORDER BY ckt, clock DESC

结果

| CKT | 最大值(设定点) | MAX(时钟) |
-------------------------------------------------- ---
| 0 | 69 | 1970 年 1 月 1 日 06:06:00+0000 |
| 1 | 67 | 1970 年 1 月 1 日 10:30:00+0000 |
| 2 | 69 | 1970 年 1 月 1 日 11:00:00+0000 |

查看演示

于 2013-04-04T17:43:15.163 回答
2

听起来你需要自己JOIN的桌子,加入MAX(clock)

SELECT p.ckt, p.setpt, p.clock 
FROM progs p
    JOIN (
        SELECT MAX(clock) maxClock, ckt
        FROM progs 
        WHERE feed = "80302" 
            AND day=4 
            AND clock<"12:15:00" 
        GROUP BY ckt
    ) p2 on p.ckt = p2.ckt AND p.clock = p2.maxclock
ORDER BY p.ckt, p.clock DESC

SQL Fiddle Demo(借自其他帖子)

生产:

0   69  January, 01 1970 06:06:00+0000
1   57  January, 01 1970 10:30:00+0000
2   69  January, 01 1970 11:00:00+0000

请注意,id 为 1 的行与您想要的结果不同,但与您的问题想要的结果相匹配...

于 2013-04-04T17:46:41.887 回答