[英]MySQL count number of occurrences of field value with join data
我的数据库中有 2 个表,见下文:
事件表
title | venue_id
event 1 | 1
event 2 | 1
event 3 | 1
event 4 | 1
event 5 | 2
event 6 | 2
event 7 | 2
event 8 | 2
event 9 | 3
event 10 | 3
场地表
id | title
1 | Venue 1
2 | Venue 2
3 | Venue 3
我正在寻找的理想结果是
venue_title | event_count
Venue 1 | 4
Venue 2 | 4
Venue 3 | 2
我一直在尝试通过连接来做到这一点,但出于某种原因,我正在为每个场地重新计算 1。
这就是我刚才的 SQL 的样子。
SELECT
count(DISTINCT events.venue_id),
venues.title,
FROM
events
INNER JOIN
venues
ON venues.id = events.venue_id
我环顾了各种SO帖子,但找不到任何能够提供帮助的东西。 我真的是这样的 SQL 初学者。
谢谢
您缺少group by
子句:
SELECT
count(DISTINCT events.venue_id),
venues.title,
FROM
events
INNER JOIN
venues
ON venues.id = events.venue_id
GROUP BY -- Here!
venues.id, venutes.title
events
表上进行group by
,获取结果并将此获得的结果与venues
表进行内部连接。 这也可以提高内连接的性能,因为它必须映射更少的行。查询语句:
select v.title,derived.event_count
from venues v
inner join (select venue_id,count(venue_id) as event_count
from events
group by venue_id) derived
on v.id = derived.venue_id
您还可以使用 GROUP BY 和 HAVING 子句
SELECT
count(events.venue_id),venues.title,
FROM events
INNER JOIN venues
ON venues.id = events.venue_id group by events.venue_id having count(events.venue_id) > 0
GROUP BY 子句用于对具有相同值的行进行分组,HAVING 子句用于限制 GROUP BY 子句返回的结果。
so > 0
返回计数 > 0 的重复值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.