Sql-Server
如何獲得計數為零的組?
我將嘗試根據我的 SQL 伺服器數據庫中的數據製作圖表。即使計數為零,我也會擁有所有街道以及居住在這條街道上的使用者的數量。
為此,我嘗試了以下查詢:
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
它給了我這個輸出:
問題是沒有使用者居住的第 5 街沒有出現在結果中。我可以用 SQL Server 做到這一點嗎?在這裡你有一個小提琴
**更新:**如果我這樣做
right join
,我得到了這個結果:
您的查詢未按預期工作的原因:
內連接為您提供 2 個表的交集。在您的情況下,您的 users 表中沒有條目,
5th street
這就是 join 沒有為此生成任何條目的原因。外連接(右或左)將根據外連接的類型(左或右)給出內連接的結果以及來自左表或右表的所有非限定記錄。
在這種情況下,我將 Street 放在連接的左側並使用左外連接,因為您希望結果集中的所有街道(即使計數為零)。
將您的選擇查詢更改為此。
SELECT S.Name AS Street, Count(U.Username) AS COUNT FROM Streets S LEFT OUTER JOIN Users U ON U.Streetid = S.Id GROUP BY S.Name