我有这样一个数据集:
id item value
1 B 6
2 B 1
3 A 1
4 C 3
5 D 6
6 D 9
我需要获取具有特定值的项,只有一次具有最小值,按项排序。因此,如果我只需要值为1、6或3的项,我希望得到一个响应:
id item value
3 A 1
2 B 1
4 C 3
5 D 6
我尝试过使用group by和ordering by the value,但似乎该组使用了第一行:
SELECT * FROM tbl1 WHERE value IN (1,3,6) GROUP BY item ORDER BY item, value
而不是吵架-
2 B 1
我明白了-
1 B 6
有什么想法吗?
3条答案
按热度按时间2vuwiymt1#
这将起作用:输入:
输出:
ego6inou2#
使用相关子查询
odopli943#
不要使用
group by
过滤数据。那是什么where
是给你的。在这种情况下,请使用相关子查询:有了合理的指标,以上应该足够快。请注意,过滤打开
value
在外部查询中不需要。对于性能,我可以这样说:
此查询假定
tbl1(id)
是主键(似乎是一个合理的假设)。然后你需要一个索引tbl1(tt1, item, value, id)
.