我使用这个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
答案 0 :(得分:0)
你从未问过一个问题。
我观察到的一件事是你在subselect中使用了一个不属于subselect的表(uo)。
也许您正在寻找:
SELECT uo.*, COUNT(*) AS rank
FROM tracks ui, tracks uo
WHERE (ui.point, ui.id) >= (uo.point, uo.id)
AND uo.id = 10;
我很难测试其准确性,不知道你的桌子是什么样的,或者你的问题实际上是什么。
答案 1 :(得分: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