mysql - 按重复的 Secret_id 排序

标签 mysql sql

我如何通过重复的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),

最佳答案

您可以找到每个 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`;

关于mysql - 按重复的 Secret_id 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41366655/

相关文章:

mysql - 如何通过连接两个表来计数

PHP SQL 选择与或

php - 如何使用mysql和php计算列值的总和?

mysql - 优化生成的字符串以存储到数据库中

mysql - 我如何构建我的数据库以在 MySQL 中有效地按依赖于时间的函数进行排序?

sql - 有效地查找给定日期之前的多个最近日期?

sql - 根据两个不同表中的时间戳和名称进行排序查询

php - ORM 的算法是什么?

带有内连接的 MYSQL 案例

c# - 超过 64 位的位掩码(标志)枚举,带有存储在数据库中的逻辑分组的位数组