显示一个表中的条目数,对于 SQL 中两个表共享的键,同时还包括在另一个表中没有位置的条目
Posted
技术标签:
【中文标题】显示一个表中的条目数,对于 SQL 中两个表共享的键,同时还包括在另一个表中没有位置的条目【英文标题】:Display the number of entries in one table, for a key shared by two tables in SQL while also including entries with no place in the other 【发布时间】:2015-03-19 23:05:14 【问题描述】:我对 mysql 很陌生,所以还在学习。基本上,我目前拥有的是两张表:
表 1,人,有姓名、出生日期和电话号码。 表 2,会议,有名称、会议日期和会议时间。
两个表中“name”中的条目是相同的(尽管名字被多次提及),尽管表 1 有一个额外的名字,Paul,他没有安排会议(因此在表 1 中没有那个人的条目表 2)。
我想打印一个简单的 2 列结果显示:
名称 |会议次数
大卫 | 3
约翰 | 4
杰瑞 | 5
保罗 | 0
我可以打印出来:
大卫 | 3
约翰 | 4
杰瑞 | 5
使用
SELECT name, COUNT(*) as Number_Of_Meetings FROM meeting GROUP BY name;
虽然这仅在会议中真正使用了姓名数据,但在尝试打印出 paul 时并没有真正的帮助,因为他不包括在内。
使用 people 表我还可以做更复杂的事情
SELECT p.name, COUNT(*) as Number_of_Meetings FROM meeting m JOIN people p ON p.name = m.name GROUP BY p.name;
这会显示人员中的名称条目,但仅显示会议中具有条目的条目,但我一生无法弄清楚如何也显示
保罗 | 0
我尝试了很多选择,但老实说无法弄清楚。
有人可以帮忙吗?
【问题讨论】:
【参考方案1】:当meetings
中没有任何匹配记录时,由于您想要来自people
表事件的所有记录,因此您需要使用left join
:
SELECT p.name, COUNT(m.name) as Number_of_Meetings
FROM people p
LEFT JOIN meetings m ON p.name = m.name
GROUP BY p.name;
【讨论】:
以上是关于显示一个表中的条目数,对于 SQL 中两个表共享的键,同时还包括在另一个表中没有位置的条目的主要内容,如果未能解决你的问题,请参考以下文章
SQL查询从数据库中的一个表中获取所有帖子,但来自特定用户的最多5个条目? [复制]