有投票表中的每個被投票人都有一個得票記錄的欄位
現在想用一條sql查詢每個人的排名
排名根據 計算 count(得票數 大于 當前被投票人得票數)+1
不知道有沒有辦法查詢出來
uj5u.com熱心網友回復:
子查詢就行啊uj5u.com熱心網友回復:
select *from info
where 被投票人的數 > (select 被投票人的數 from info where user='123');
uj5u.com熱心網友回復:
select d.*, @r:=if(@c>c,@r+1,@r) as 排名, @c:=c
from(
select 被投票人, count(*) as c from 表 group by 被投票人 order by c desc
)d,(select @c:=null, @r:=1) _;
uj5u.com熱心網友回復:
沒有提供案例,不知道這個是不是你要的結果declare @t table (No int,person varchar(100))
insert into @t
select 1,'張三' union ALL
select 2,'張三' union ALL
select 3,'李四' union ALL
select 4,'王五' union ALL
select 5,'張三' union ALL
select 6,'張三' union ALL
select 7,'張三' union ALL
select 8,'李四'
---以上測驗資料
SELECT * FROM (
select person,count(1) as countNo
from @t
Group by person ---按人員分組求出每個人員的投票總數量
) AS A--把里面這段SQL當臨時表A
WHERE A.countNo>(SELECT COUNT(distinct person)+1 AS No from @t)---在A表中查出數量大于投標人數+1的人員
--如案例中總投票人數為3人,按你的要求查出大于總人數+1的人員 ,所以只有張三滿足
uj5u.com熱心網友回復:
就是這個‘123’是不知道的,多條資料uj5u.com熱心網友回復:
不是很能看懂,最后的那個下劃線的是什么意思?uj5u.com熱心網友回復:
表里每一個被投票人只有一條資料,每條資料記錄不同的得票數。所以group by被投票人的話,c就永遠都一樣了啊轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/95235.html
標籤:MySQL
