2014-03-01 25 views
0

我想從數據庫表中選擇多個值。 第一個請求是從我的前10名單的表格中獲得前10個值。 第二個要求是讓玩家在桌子上的位置。同一個表上的多個請求的SQL語句

僞聲明可能看起來像:

SELECT * FROM mytable ORDER BY score DESC LIMIT 10 AND WHERE username = myusernamevariable 

形式是選擇我需要獲得第二個請求(AND WHERE username = myusernamevariable)

的位置有沒有一種方法來創建一個SQL語句,返回前十名數據庫條目以及特定行中的條目(以及此條目的位置)?

+1

我不清楚地瞭解您的問題... –

+0

我會建議使用Redis使用'sort sets'並使用'zrank'命令。請參閱http://redis.io/commands/zrank。 – Darmen

回答

2

你想要的位置或標識行,球員是?您可以輕鬆添加一個標誌來識別玩家的一行:

Select t.*, (username = myusernamevariable) as IsMyPlayer 
FROM mytable t 
ORDER BY score DESC 
LIMIT 10 ; 

如果你想同時返回一個球員的位置和行,那麼你就需要兩個查詢,因爲返回集的結構是不同的。如果你想在每行的排名,你能做到這一點使用:

Select t.*, (username = myusernamevariable) as IsMyPlayer, (@rank := @rank + 1) as rank 
FROM mytable t cross join 
    (select @rank := 0) const 
ORDER BY score DESC 
LIMIT 10 ; 
+0

我會嘗試用兩個查詢來做到這一點。謝謝你的幫助。 – Nano

0

獲得玩家的位置:

SELECT COUNT(id)+1 AS position FROM mytable 
WHERE score > (SELECT score FROM mytable WHERE username = 'myusernamevariable') 
ORDER BY score DESC LIMIT 10 ;