我有 2 张 table ,
**Member table**
mid | parentid | name
1 1 a
2 1 x
3 1 c
4 2 d
5 3 e
6 3 f
7 4 g
和
**contact table**
cid | mid
1 1
2 1
3 3
4 2
5 3
6 4
7 4
我需要一个查询来显示成员列表,并根据 2 个表中父级人数最多的人数进行排序,因此答案为
id | name |rank
1 a 5
3 c 4
4 d 3
2 b 2
5 f 0
6 g 0
7 h 0
最佳答案
我认为使用UNION ALL
和GROUP BY
是解决这个问题的方法。这可能有效,但我还没有测试过。
SELECT
member.mid AS id,
member.name AS name,
COUNT(counter.x) AS rank
FROM
member,
(
SELECT parentid AS x FROM member
UNION ALL
SELECT mid AS x FROM contact
) AS counter
WHERE
member.mid = counter.x
GROUP BY counter.x
SORT BY counter.x DESC
关于php - mysql查询与2个表的一些计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31253554/