0

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

按权重 desc 排序,排序 asc :

ID : Weight : Rank desc
8:7:2
7 : 7 : 3
4:5:2
6:4:1
2:2:4
9:2:2

我需要从此列表中递归地显示第一行和最后一行的数据对。行可能是奇数或偶数且不固定。可能是 100s。

返回的结果应该是这样的:

编号 : (8,9)**(7,2)**(4,6)

我正在考虑 Mysql Select UNION 但没有正确获取它。有帮助吗?

4

1 回答 1

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
于 2013-02-20T15:19:22.433 回答