我确实尝试通过谷歌搜索自己获得答案,但我找不到解决方案。
实际上我有两张 table 。
这是假设学生表
id | sname | cid
1 a 1
2 b 2
3 c 2
4 d 3
5 e 4
6 f 3
7 g 4
8 h 3
这是类表
id | sname
1 c1
2 c2
3 c3
4 c4
我想要如下结果:
Result:
id | cname | sname | count
1 c1 a 1
2 c2 b 2
3 c2 c 2
4 c3 d 3
1 c4 e 2
2 c3 f 3
3 c4 g 2
4 c3 h 3
如您所见,结果将如上所示,所有学生姓名将与类(class)名称和人数一起显示。
我该怎么做?
最佳答案
试试这个:
SELECT * FROM
((SELECT C.id,C.sname as cname,S.sname as sname
FROM class C INNER JOIN students S on C.id=S.cid) T1
LEFT JOIN
(Select C.id,count(S.cid) as count
FROM class C INNER JOIN students S on C.id=S.cid
GROUP BY C.id) T2 on T2.id=T1.id)
ORDER BY sname
结果:
ID CNAME SNAME COUNT
1 c1 a 1
2 c2 b 2
2 c2 c 2
3 c3 d 3
4 c4 e 2
3 c3 f 3
4 c4 g 2
3 c3 h 3
在 SQL Fiddle 中查看结果.
解释:
内部查询的第一部分选择 id、cname 和 sname。第二部分选择计数。在外部查询中,我们只是加入它们。
关于mysql - 在mysql中显示计数值和多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22502811/