這個查詢將返回使用id = 6的用戶的信譽:
select reputation from USERS where id=6
而這將在兩個用戶的信譽返回> =一個使用id = 6 :
(select *
from USERS
where reputation >= (select reputation from USERS where id=6)
order by reputation
limit 2)
那麼你可以用信譽<返回兩個用戶=一個id爲6:
(select *
from USERS
where reputation <= (select reputation from USERS where id=6)
order by reputation DESC
limit 2)
當然
,這兩個查詢將返回與ID的用戶= 6的兩倍(除非有重複的聲譽),以及一個記錄與以下用戶和前一個用戶。您可以使用UNION結合了(工會將去除重複行的ID = 6):
(select *
from USERS
where reputation >= (select reputation from USERS where id=6)
order by reputation
limit 2)
union
(select *
from USERS
where reputation <= (select reputation from USERS where id=6)
order by reputation DESC
limit 2)
這裏唯一的問題是,聲譽可以重複。你想在這種情況下返回哪些記錄?
這個抵消應該是什麼意思?它是否會增加x的限制值?它是否會跳過所有條目,直到ID = 33,然後選擇下一個3? –
您可以發佈表格的行樣本,以及預期的查詢輸出嗎?很難理解你的需求與在普通的'WHERE'子句中簡單地說'WHERE users.id> = 33'的方式不同,在給ORDER BY添加另一列之後。 –
我不確定它會不會起作用。但是你可以試試看。 'select * from users ORDER BY reputation having reputation> =(選擇來自用戶的信譽,其中user.id = 33)limit 3' –