2017-10-16 62 views
0

因此,我使用mysql在Minecraft服務器頁面上存儲喜歡作爲他們做廣告的方式。不過,我在一個單獨的表中存儲這些喜歡:PHP + MySQL - ORDER BY LIKES

id user_id server_id 
1  1   1 
2  1  24 
4  2  22 
5  2  22 
6  2   1 
7  2   4 
8  2   5 
9  2   6 
10  2  17 
11  2  18 
12  2  21 
13  2  24 

插入代碼:

INSERT INTO likes (user_id, server_id) VALUES ('".$user_id."', '".$server_id."'); 

但我目前通過添加日期(最近第一)排序他們,但我想知道如何按喜歡排序。

+2

你有一個插入語句。我假設你的排序是參與選擇語句?讓我們看看select語句? – Andrew

+0

我已經鎖定此問題,以阻止您繼續回滾修改,大大改善帖子。本網站[合作編輯](https://stackoverflow.com/help/editing)。如果你不這樣做,這可能不是你的網站。 *編輯原因*是因爲我們不允許圖片的文字內容。圖像不可搜索,使用屏幕閱讀器的用戶無法閱讀。爲了測試目的,他們也難以複製信息,因此阻礙了很好的答案。所以,用文字取代你的形象的人是你的大忙。 –

回答

-3

你應該在你的服務器表上放置一個計數器列(讓我們說:likes_counter),然後,每當你給喜歡的表添加一個喜歡的表時,你就增加這個計數器。太過分了!

INSERT INTO likes (user_id, server_id) VALUES ('".$user_id."', '".$server_id."'); 
UPDATE servers_table SET likes_counter = likes_counter+1 WHERE server_id = '".$server_id."'; 

現在,當您選擇服務器,您只需要做的喜歡下令選擇:

SELECT * FROM servers_table ORDER BY likes_counter DESC; 

在這裏,我假設你的服務器的表名爲servers_table,與更換你給了桌子的名字。

+0

添加一個索引?我會怎麼做? –

+0

我忘了說這是tottaly可選,但強烈推薦!該指數將提高正在完成的訂單的執行情況。你應該閱讀有關索引的文檔https://dev.mysql.com/doc/refman/5.5/en/optimization-indexes.html – BigBlast

+0

它不會更新likes_counter –