我有一张桌子
Field1 _ Field2 _ Field3 _
我不关心Field3的分解,所以希望为每个字段设置一条记录:
Field1 _ Field2 _
(因为我不关心第三场比赛)
最后以例如
所以我想我可以
Create table LOW_HIGH_ALL as (select ID, FIeld1, FIeld2, max(High), min(Low) from LOW_HIGH group by Field1, Field2如您所见,每个字段1表示字段B字段中不与另一个字段重叠的范围。
问题是有一些“坏数据”,所以有时我最终会:
也就是糟糕的数据。我不能就这么假设1总是坏的。所以我想,如果我能接近最低的人,我就能得到
并且可以使用' Min -1‘和min之间的区别来计算出当我有坏的min数据时(并且可以使用第二个值来代替),到目前为止,它似乎只是一个坏的min数据。
我已经尝试了Min-1的工作,所以我想知道是否有其他的方法来提取第二个最低的值。
发布于 2014-03-15 03:07:54
第二低是有点痛。但是,您可以在MySQL中使用substring_index()/group_concat()技巧来完成它:
Create table LOW_HIGH_ALL as
select ID, FIeld1, FIeld2, max(High), min(Low),
substring_index(substring_index(group_concat(distinct low order by low asc), ',', 2), ',', -1) as min_2
from LOW_HIGH
group by Field1, Field2;这将"low“值连接在一起,然后从结果字符串中提取第二个值。
https://stackoverflow.com/questions/22418968
复制相似问题