MySQL更新字段基于第三个分组时另一个字段的最小值

时间:2013-11-07 02:51:36

标签: mysql

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

我有一张表:

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

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

更新表set tag = 1(选择min?)

2 个答案:

答案 0 :(得分:5)

您可以通过计算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;

答案 1 :(得分:-2)

UPDATE `table` t
SET tag = 1
WHERE value = (SELECT MIN(value) FROM `table` t2 WHERE t.date = t2.date)

UPDATE `table` t
SET tag = 1
WHERE value <= ALL (SELECT value FROM `table` t2 WHERE t.date = t2.date)

请注意,如果有平局,tag将为每个关联记录1