按外键出现次数排序:编写SQL查询返回按投票数排序的所有餐厅
解决方案
要实现返回所有餐厅并按获得的投票数排序的需求,我们可以通过**左连接(LEFT JOIN)**关联两张表,再分组统计投票数,具体SQL语句如下:
SELECT r.id, r.name, r.address, COUNT(v.id) AS vote_count FROM restaurants r LEFT JOIN votes v ON r.id = v.restaurant_id GROUP BY r.id, r.name, r.address ORDER BY vote_count DESC;
关键说明:
- 使用
LEFT JOIN而非INNER JOIN:确保即使没有获得任何投票的餐厅也会被包含在结果中,这类餐厅的vote_count会显示为0 COUNT(v.id):统计每个餐厅对应的有效投票记录数(未投票的餐厅对应的v.id为NULL,COUNT会忽略NULL值,得到正确的0)GROUP BY r.id, r.name, r.address:根据餐厅的唯一标识和信息分组,保证每个餐厅只返回一条记录ORDER BY vote_count DESC:按投票数从高到低排序,若需要升序可改为ASC
内容的提问来源于stack exchange,提问作者Igor Meshalkin
相关产品推荐
相关产品推荐

