2016-12-28 24 views
0

如何,我可以通過反覆secret_id訂購此表:順序反覆secret_id

此表我的網站喜歡錶,也有一些職位在至極的人可以通過一個按鈕和我的數據庫都喜歡存儲了該帖子被喜歡的ip以及他的secret_id。

該id的重複對應於一段時間喜歡的帖子。

所以我想按最重複的順序排列secret_id。我該怎麼做?

我想用我的html頁面

在PHP代碼例如像命令:SELECT * FROM .... ORDER BY .....

INSERT INTO `likes` (`id`, `ip`, `secret_id`) VALUES 
(1, '95.234.109.87', 3), 
(2, '95.234.109.87', 7), 
(3, '95.234.109.87', 6), 
(4, '95.234.109.87', 1), 
(5, '91.252.43.7', 7), 
(6, '91.252.43.7', 4), 
(7, '91.252.43.7', 3), 
+0

'GROUP BY ID ORDER BY ID'嘗試分組,然後按同一列排序... – Asfo

+0

*「最重複的ID」* - 您的ID看起來是唯一的;我想你最想重複的'secret_id',正確的和/或'ip'? –

+0

@Fred -ii-我的意思是最重複的secret_id對不起 –

回答

2

你可以找到數對每個secret_id,通過它主表和順序加入它的計算,像這樣:

select t1.* 
from likes t1 
inner join (
    select `secret_id`, count(*) cnt 
    from likes 
    group by `secret_id` 
) t2 on t1.`secret_id` = t2.`secret_id` 
order by t2.cnt desc, t1.`id`; 
+0

我桌子的名字是:likes –

+0

我必須把t1和t2放在什麼位置? –

+0

@shprehu更新。只需直接使用它。 – GurV

0

試試這個:

SELECT count(secret_id) AS SID, secret_id FROM likes GROUP BY secret_id ORDER BY SID DESC; 

它應該將所有的secret_id分組,如果它們被重複,那麼計算ammount並命令它們知道有多少secret_id被重複。

希望就是你想要的。