在MySQL中选择每个项目的最小值

时间:2015-08-18 09:17:49

标签: mysql sql database oracle greatest-n-per-group

您好我有以下MySQL表:

id       item         value
1         A             11
2         A             20
3         B              2
4         C              1
5         B             14
6         C             12

我尝试做的是选择价值最低的项目 - 根据搜索此论坛,我尝试做的是使用以下查询:

  SELECT *,
         MIN(value) 
    FROM mytable 
GROUP BY item

预期结果应为 A => 11,B => 2; C => 1 但是对于某些项目,最小值是正确的,对于某些其他项目,最小值是不同的值。请注意,mytable包含大约100行。

4 个答案:

答案 0 :(得分:1)

这可以在oracle中运行

SELECT item, min(value)
FROM mytable
GROUP BY item

答案 1 :(得分:1)

你可以这样试试。

SELECT t.* FROM mytable  t
JOIN 
( SELECT item, MIN(value) minVal
  FROM mytable  GROUP BY item
) t2
ON t.value = t2.minVal AND t.item = t2.item;

答案 2 :(得分:0)

select *
from mytable t1
inner join
(
  select min(value) value, id
  from mytable 
  group by id
) t2
  on t1.id = t2.id
  and t1.value= t2.value

答案 3 :(得分:0)

如果您需要每个项目的min(value)的所有信息,并且“value”列的数据类型为int,则运行以下查询,

select * from mytable
where (item,value) in
(
   SELECT item, min(value)
   FROM mytable
   GROUP BY item
)

请参阅SQL fiddle