2008-09-19 29 views

回答

4

如果我理解正確的話,你可以這樣做:

select * from users order by max(rank) desc limit 0, 49 
union 
select * from users where user = x 

這樣你會得到49個頂級用戶再加上你的特定用戶。

+0

如果用戶「x」在前49名用戶中,這是否工作? – 2008-09-20 04:03:49

+0

好問題。您可以在頂部選擇 – Mariano 2008-09-20 07:36:34

1

不管一個單一的,花哨的SQL查詢可以做,最易於維護的代碼很可能是兩個查詢:

select user from users where id = "fred"; 
select user from users where id != "fred" order by rank limit 49; 

當然「弗雷德」(或任何人)通常會由一個佔位符代替,但具體取決於環境。

0
declare @topUsers table(
    userId int primary key, 
    username varchar(25) 
) 
insert into @topUsers 
select top 50 
    userId, 
    userName 
from Users 
order by rank desc 

insert into @topUsers 
select 
    userID, 
    userName 
from Users 
where userID = 1234 --userID of special user 

select * from @topUsers 
0

最簡單的解決方案取決於您的要求以及您的數據庫支持的內容。

如果你不介意重複結果的可能性,那麼一個簡單的聯合(如馬里亞諾孔蒂證明)是好的。

否則,你可以,如果你的數據庫支持它這樣做

select distinct <columnlist> 
from (select * from users order by max(rank) desc limit 0, 49 
     union 
     select * from users where user = x)