我正在使用查詢來查找給定測試ID中用戶的排名,這使得我一次只能進行一次測試的排名,而我必須使用foreach來獲得所有測試的測試等級。優化MySQL查詢以查找用戶在單個查詢中進行不同測試的排名
SELECT * , t.UserRank
FROM (
SELECT * , (
@rownum := @rownum +1
)UserRank
FROM User_Date_Table, (
SELECT @rownum :=0
)t
WHERE my_test_id = '$test_id'
ORDER BY test_score DESC
)t
WHERE user_id = '$my_user_id'
可以查詢生成,可以給我用戶級別的所有用戶在單個查詢所採取的測試,因爲這樣會降低分貝擊中多次。
我必須找到Test_Type_Id = $ my_test_type_id用戶的所有行列(說),與b.my_test_id加入a.id爲用戶提供USER_ID = $ my_user_id(說)
TABLE STRUCTURE
My_Test_Table (a)
id | name | Test_Type_Id
----------------------------------------------
1 | name_1 | 1
2 | name_2 | 1
3 | name_3 | 2
4 | name_4 | 1
5 | name_5 | 1
6 | name_6 | 2
7 | name_7 | 1
8 | name_8 | 2
9 | name_9 | 1
User_Date_Table (b)
id | my_test_id | user_id | test_score
---------------------------------------------------------
1 | 1 | 32 | 34
2 | 1 | 2 | 345
3 | 2 | 4 | 654
4 | 1 | 76 | 87
5 | 3 | 23 | 453
6 | 2 | 5 | 45
7 | 1 | 43 | 22
8 | 2 | 7 | 987
9 | 2 | 32 | 45
10 | 1 | 1 | 12
11 | 1 | 9 | 35
12 | 3 | 67 | 765
13 | 1 | 88 | 23
14 | 2 | 34 | 76
15 | 3 | 1 | 765
16 | 2 | 54 | 45
17 | 1 | 10 | 87
18 | 1 | 23 | 3
19 | 3 | 44 | 345
20 | 1 | 55 | 232
21 | 2 | 28 | 234
22 | 3 | 32 | 231
您可以添加一些簡單的樣本數據和期望的結果嗎?我不清楚你想要查詢的輸出是什麼樣子。 –
說我們需要在測試類型1中找到user_id = 32的排名 – atjoshi