作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的网站上有一个个人消息系统,这很容易。
但我想要一个管理员页面,其中显示用户之间的所有对话及其消息量。
所以表格看起来像(简化版):
CREATE TABLE pm (
id INT(10) NOT NULL AUTO_INCREMENT,
from INT(10) NOT NULL REFERENCES (usertable),
to INT(10) NOT NULL REFERENCES (usertable),
message BLOB NOT NULL
);
例子:
Mark - John - 8 messages
Kate - Bryan - 3 messages
最佳答案
select from_id, to_id, count(*) count_between
from
(
select from_id, to_id from pm
union all
select to_id, from_id from pm
) combined
where from_id < to_id
group by from_id, to_id
CREATE TABLE pm (from_id int,to_id int);
insert pm select 1,2;
insert pm select 1,2;
insert pm select 1,2;
insert pm select 1,2;
insert pm select 1,2;
insert pm select 2,1;
insert pm select 2,1;
insert pm select 2,1;
insert pm select 3,4;
insert pm select 3,4;
insert pm select 4,3;
select from_id, to_id, count(*) count_between
from
(
select from_id, to_id from pm
union all
select to_id, from_id from pm
) combined
where from_id < to_id
group by from_id, to_id
--- results
from_id to_id count_between
----------- ----------- -------------
1 2 8
3 4 3
user
table 之类的。例如
select u1.name from_, u2.name to_, count(*) count_between
from
(
select from_id, to_id from pm
union all
select to_id, from_id from pm
) combined
join users u1 on u1.id = combined.from_id
join users u2 on u2.id = combined.to_id
where from_id < to_id
group by u1.name, u2.name
关于sql - 如何在SQL中的两列上交叉分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12615384/
我是一名优秀的程序员,十分优秀!