需要以递归方式从mysql表中查找第一行和最后一行,并以对格式显示它们

时间:2013-02-20 14:14:55

标签: mysql

比如说,我有一个包含数据的表:

通过一些重量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但没有正确使用它。有什么帮助吗?

1 个答案:

答案 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