我有一张表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)
答案 0 :(得分:2)
如果我正确理解您的问题,您需要使用UNION ALL
来合并您的to
和from
列(因为其中任何一个都可能包含您的身份证明' 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%确定这是否是确切的格式,因为我没有任何可测试的东西。但是它应该让你接近正确的答案(抛开语法错误)。