比如说,我有一个包含数据的表:
通过一些重量desc排序,排名asc:
ID : Weight : Rank desc 8 : 7 : 2 7 : 7 : 3 4 : 5 : 2 6 : 4 : 1 2 : 2 : 4 9 : 2 : 2
我需要从此列表中递归显示第一行和最后一行的数据对。 行可能是奇数或偶数,并且不是固定的。可能是100秒。
返回的结果应该是:
ID : (8,9)**(7,2)**(4,6)
我正在考虑使用Mysql选择UNION但没有正确使用它。有什么帮助吗?
答案 0 :(得分:0)
试试这个//这个想法是你要将有序表与反向排序表配对:
SET @fw=0; #forwards counter/index
SET @bw=(SELECT COUNT(id) FROM yourtable); #backwards index
SET @limit= @bw/2; #limit tohalf the set to avoid full set of versions (resulting in duplicates)
SELECT a.id, b.id
FROM (
SELECT @bw:=@bw-1 AS ct, id
FROM `yourtable`
ORDER BY id
) a, (
SELECT @fw:=@fw+1 AS ct, id
FROM `yourtable`
ORDER BY id
) b
WHERE a.ct = b.ct
AND a.ct <= @limit