按列分组
问题描述:
Sample Table
User1 | User2
123, 555
123, 1
123, 2
456, 2
555, 456
12, 123
12, 456
输入:我输入列表(123,456)
查看包含这些值的行。然后,我希望MySQL检查该行中的相反/其他列,然后按照该值对输出进行分组。按列分组
输出:
User | Count(*)
555, 2
2, 2
1, 1
555计数2,因为行123, 555
和行555, 456
都包含一个输入:123和456
我试着看CASE
关键字,因为这里的一个明显的障碍是抓住相反的/剩余的列并将其用作返回值之一。
完全错误,但我的一半完成的方法。
SELECT user, count(*) from friendships
WHERE User1 in (123,456) as user or User2 in (123,456) as user
答
这个棘手的部分是你的标准是IN()正在寻找在用户1列,然后试图找到重复的用户2列...所以你需要有工会加入
使用嵌套查询与所述内部查询是每两个查询的联合与一组由SELECT user2, COUNT(*)
FROM
( SELECT user1, user2
FROM friends f
WHERE f.user1 IN(123, 456)
UNION ALL
SELECT f.user1, f.user2
FROM friends f
JOIN friends f1 ON f1.user1 = f.user2
WHERE f.user1 IN(123, 456)
)t
GROUP BY user2;
尝试 – antlersoft 2014-10-11 21:27:10