我对这个 sql 查询有点困惑。我有两张 table
TbleName - usrs TbleName - idtb
name | cid cname | cid
------------- ----------------
james | 1100 IT | 1100
john | 1200 HR | 1300
jack | 1100 QA | 1200
bill | 1300 HD | 1400
troy | 1100
SELECT COUNT(*) as 'Total' FROM usrs u WHERE u.cid = 1100;
SELECT c.cname FROM idtb c WHERE c.cid = 1100;
我的第一个查询返回 3,我的第二个查询返回 IT,现在我想将这 2 个查询加入一个会产生结果的查询中
Total | Cname
------------------
3 | IT
我尝试了几种方法,这个有效
SELECT COUNT(*) as 'Total',c.cname FROM usrs u JOIN
idtb c ON u.cid = c.cid WHERE u.cid = 1100
GROUP BY u.cid
但是当 u.cid = 1400 时,查询似乎不起作用,因为 usrs 表中没有 cid 值为 1400 的名称,它返回空结果,但我希望结果为
Total | Cname
-------------------
0 | HD
如果 usrs 中没有记录,查询将不起作用。我尝试使用左、右和完全连接,但没有弄明白。任何帮助是极大的赞赏。
最佳答案
因为你想打印所有 cname
但计算 usrs
这是你需要的查询:
select a.cname, count(b.name)
from idtb a left join usrs b on (a.cid = b.cid)
group by a.cname
如果你想为其中的一些添加过滤器,只需添加 where 子句即可。
在 fiddle 上查看:http://sqlfiddle.com/#!2/0acec/2
关于mysql - 在两个表上计数 (*),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23633763/