Create table Streets(
ID int IDENTITY primary key,
Name varchar(100)
);
create table users(
ID int IDENTITY primary key,
Username varchar(100),
StreetID int references Streets(id)
);
insert into streets values ('1st street'), ('2nd street'), ('3rd street'),
('4th street'), ('5th street');
insert into users values ('Pol', 1), ('Doortje', 1), ('Marc', 2), ('Bieke', 2),
('Paulien', 2), ('Fernand', 2), ('Pascal', 2), ('Boma', 3),
('Goedele', 3), ('Xavier', 4);
select s.name as street, count(s.name) as count
from users u inner join streets s on u.streetid = s.id
group by s.name
而且它给我这个输出:
| ID | 街道 | 计数 |
|---|---|---|
| 1 | 第一街 | 2 |
| 2 | 第二街 | 5 |
| 3 | 第三街 | 2 |
| 4 | 第四街 | 1 |
问题是第五街没有用户居住,所以在结果中没有显示。我能用SQL服务器做到这一点吗?这里有一个fiddle供您参考
更新:如果我使用right join,我得到了以下结果:
| ID | 街道 | 数量 |
|---|---|---|
| 1 | 第一街 | 2 |
| 2 | 第二街 | 5 |
| 3 | 第三街 | 2 |
| 4 | 第四街 | 1 |
| 5 | 第五街 | 1 |

COUNT(u.streetid)。 - dnoethright join和right outer join是同一回事。我按照 @jpmc26 的建议在我的答案中添加了解释。 - SqlWorldWide