Select MySQL 中每件商品的最低价值

Select min value per item in MySQL

你好我有以下MySQLtable:

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

我想要做的是 select 具有最低值的项目 - 我试图根据对这个论坛的搜索做的是使用以下查询:

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

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

这在 oracle 中有效

SELECT item, min(value)
FROM mytable
GROUP BY item
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

你可以这样试试

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;

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

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

请看SQL fiddle