您好我有以下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行。
答案 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