5

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

我有一张像这样的桌子:

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(选择最小值?)

4

2 回答 2

7

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

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;
于 2013-11-07T02:58:55.653 回答
-3
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)

请注意,如果有平局,tag1针对每条平局记录。

于 2013-11-07T02:54:57.527 回答