当由第三个分组时,MySQL 根据另一个字段的最小值更新字段

标签 mysql

我已经阅读了几个关于选择最小值、分组等的线程,但似乎无法创建一个有效的查询来解决这个问题。如有重复请见谅。

我有一个像这样的表:

ID  Date    Value   Tag  
1   1/1/13  500 NULL  
2   1/1/13  10 NULL  
3   1/1/13  12 NULL  
4   1/2/13  99 NULL  
5   1/2/13  136 NULL  
6   1/2/13  17 NULL

基本上需要一个更新查询,当它具有按日期分组的最低值时,用值 1 填充 TAG 字段。在此示例中,这将是 ID 2 和 6。

更新表设置标签= 1(选择最小值?)

最佳答案

您可以通过计算 min() 并使用 join 进行过滤来做到这一点:

update t join
       (select date, min(value) as minvalue
        from t
        group by date
       ) tmin
       on t.date = tmin.date and t.value = tmin.minvalue
    set tag = 1;

关于当由第三个分组时,MySQL 根据另一个字段的最小值更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19827114/

相关文章:

php - 选择带有复选框的 mysql 列并在 html 表、php 中显示数据

php - 设置 userid 的 AUTO_INCREMENT

MySQL查询选择过去的某一天?

mysql - 从同一张表中插入两个选择

mysql - 从子选择返回行

php - 即使在 PHP IF.. 语句之后,选择选项仍然出现在页面上

mysql - 按姓氏排序列表

mysql - 如果删除了父外键,则将子表中的外键列设置为空

python - MySQL 触发器到 RabbitMQ

mysql - 需要帮助使用在两个单独表的列之间进行算术运算的函数将列添加到一个表