MySQL按行数排序

时间:2014-11-17 19:22:02

标签: mysql sql select join count

我有一张表msg喜欢

msg_id|from|to|msg|

现在我要选择我最常用的所有msg_id

例如。 如果我想按照desc顺序选择我的前2个信使(我的id = 2)

msg_id|from|to|msg|
1       2    3 Hi
2       2    3 Hi
3       2    4 Hi
4       3    2 Hi
5       3    4 Hi
6       4    2 Hi
7       3    2 Hi
8       1    2 Hi
9       2    4 Hi
10      3    2 Hi

查询会给我

3(因为总msg = 5)

4(因为总msg = 4)

2 个答案:

答案 0 :(得分:2)

如果我正确理解您的问题,您需要使用UNION ALL来合并您的tofrom列(因为其中任何一个都可能包含您的身份证明' re寻找)。然后您可以按COUNT降序排序:

select id
from (
  select `to` id, `from` contact
  from msg
  union all
  select `from`, `to`
  from msg
  ) t
where contact = 2
group by id
order by count(1) desc
limit 2

答案 1 :(得分:0)

你可以尝试这样的事情......

SELECT count(to)AS num FROM msg GROUP BY to ORDER BY num LIMIT 2;

我不是100%确定这是否是确切的格式,因为我没有任何可测试的东西。但是它应该让你接近正确的答案(抛开语法错误)。