-2

我使用这个 mysql 查询逐点获得排名。我需要按等级获取上一个和下一个项目。

例如:商品的排名是 99。在商品页面,我想显示第 100、第 101、第 98 和第 97 项。

http://erincfirtina.com/apps/urdemo/track.php?tid=10

我需要做相关的曲目列表

这是我获得排名的mysql查询:

SELECT 
uo.*, 
( SELECT  COUNT(*) FROM tracks ui WHERE (ui.point, ui.id) >= (uo.point, uo.id) ) AS rank
FROM tracks uo WHERE id = 10
4

2 回答 2

0

你从来没有问过一个问题。

我观察到的一件事是,您在子选择中使用了不属于子选择的表(uo)。

也许您正在寻找:

SELECT  uo.*, COUNT(*) AS rank
FROM tracks ui, tracks uo 
WHERE (ui.point, ui.id) >= (uo.point, uo.id) 
  AND uo.id = 10;

我很难在不知道您的表格是什么样子或您的问题实际上是什么的情况下测试它的准确性。

于 2013-02-26T16:05:00.363 回答
0

这个查询应该可以工作,尽管它的扩展性很差。

SELECT *
FROM (
    SELECT 
    uo.*, 
    ( SELECT  COUNT(*) FROM tracks ui WHERE (ui.point, ui.id) >= (uo.point, uo.id) ) AS rank
    FROM tracks uo WHERE id = 10
) t
ORDER BY t.rank DESC
于 2013-02-26T16:15:53.050 回答