mysql - 从每日最低值中选择数据

标签 mysql sql

我的数据库中有一个表,如下所示: 身份证 |日期时间 |值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

关于mysql - 从每日最低值中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22939885/

相关文章:

SQL-Oracle 使用 LAG() 从自身更新表

javascript - 如何循环表行并获取列复选框

php - 将 PHP 文件重命名为 .php 以外的名称

sql - 写入具有两位小数的数字 SQL Server

sql - 在这个特定的上下文中是否有更有效的方法来编写我的过滤器?

mysql - SQL查询,同时使用IN和LIKE。可能的?

MySQL - 合并表行(分组依据不起作用)

mysql - 如何使用两个表和辅助表编写查询?

mysql - 计算每个人被分配到的事件

javascript - 标记视频不适用于 onmouseover 和 onvideoout