首先有1個報名表:queue ,欄位為 id,userid,instanceid,creationtime
查詢某人報了哪些課程:select * from queue where userid = 1
查詢某節課程有哪些人報名:select * from queue where instanceid = 5
查詢某人在某課程的排隊佇列中的位置: select * from (
select @rownum := @rownum +1 AS rownum, q.* from (SELECT
@rownum := 0) r,queue q where q.InstanceID = 5 order by q.CreationTime asc ) t where t.UserID = 1
那么問題來了,求教如何查詢某人報了哪些課程的同時,加一列來顯示該次報名處于佇列的什么位置?
uj5u.com熱心網友回復:
MySQL的分組等級實作根據InstanceID分組,再根據CreationTime分級
1. ORDER BY q.InstanceID,q.CreationTime
2. (select @InstID:=NULL, @rank:=0) r
3.
if(@InstID = q.InstanceID, @rank:=@rank+1, @rank:=1) as rank
,@InstID:=q.InstanceID as InstID
注意rank必須放在前面
select * from (
select
if(@InstID = q.InstanceID, @rank:=@rank+1, @rank:=1) as rank
,@InstID:=q.InstanceID as InstID
,q.*
from queue q,(select @InstID:=NULL, @rank:=0) r
ORDER BY q.InstanceID,q.CreationTime
) t where t.UserID = 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/40252.html
標籤:MySQL
上一篇:關于ERP系統請教一個問題
下一篇:統計各子公司四個季度的活動開銷
