我已经阅读了几个关于选择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?)
答案 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
。