我的数据库中有一个表,如下所示: 身份证 |日期时间 |值1 |值2 |值3
现在我想选择日期时间、value1、value2 和 value3,其中 value1 是每天的最低值 (MIN(value1))。下面的示例(箭头指示需要选择的行):
ID | datetime | value1 | value2 | value3
1 | 2014-01-01 00:06:00 | 10 | 15 | 20
2 | 2014-01-01 00:12:00 | 5 | 15 | 22 <--
3 | 2014-01-01 00:18:00 | 12 | 45 | 25
4 | 2014-01-02 00:06:00 | 1 | 25 | 10 <--
5 | 2014-01-02 00:12:00 | 12 | 45 | 25
6 | 2014-01-02 00:18:00 | 13 | 25 | 10
7 | 2014-01-03 00:06:00 | 17 | 35 | 95
8 | 2014-01-03 00:12:00 | 15 | 75 | 10
9 | 2014-01-03 00:18:00 | 12 | 75 | 35 <--
我有以下查询:
SELECT
datetime,
MIN(value1) as value1,
value2,
value3
FROM
table
GROUP BY
DAY(datetime)
ORDER BY
datetime ASC
LIMIT 50
这给了我一个结果,但不是我所期望的。日期时间和 value2、value3 不是来自找到每日最小值的行。
有人可以解释一下我做错了什么吗?
此外:我是否能够将其结合起来(与自连接或其他东西),其中我将获得如上所述的当天的最小值,然后从结果结果集中我将仅选择其中例如 value2 > 的行20 && 值2 < 60 && 值3 > 10?
提前非常感谢
最佳答案
select
*
from
Table1 t
inner join (select date(datetime) as dt, min(value1) v from Table1 group by dt) st
on date(t.datetime) = st.dt and t.value1 = st.v
看到它在 中实时运行 sqlfiddle
在此手册条目中查看更多如何执行此操作的示例:The Rows Holding the Group-wise Maximum of a Certain Column
关于mysql - 从每日最低值中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939885/