gpt4 book ai didi

SQL - LEFT OUTER JOIN 和 WHERE 子句

转载 作者:行者123 更新时间:2023-12-04 17:28:56 26 4
gpt4 key购买 nike

我在 SQL 方面很糟糕。我不知道我正在尝试做的事情是否可行。但是,由于我们的数据结构,我需要以这种方式解决这个问题,或者进行大规模的架构更改。

我正在尝试计算一个国家的“省”(又名州)的数量。但是,只有少数省份需要从计数中忽略。因此,我试图检索一个国家列表,其中包含每个国家/地区的省份数。

例如,我需要查询美国,而忽略“华盛顿特区”从计数。原因是因为根据我们的要求,华盛顿特区不是一个州。这是我目前正在尝试的(它不起作用):

SELECT
c.Name AS 'CountryName',
ISNULL(COUNT(p.[ID]), 0) as 'ProvinceCount'
FROM
Country c LEFT OUTER JOIN [Province] p ON p.[CountryID]=c.[ID]
WHERE
c.[ID]=@idParameter and
p.[Name] <> 'Washington D.C.'

可以想象,当 idParameter 与美国的 idParameter 匹配时,此查询不会返回任何结果。

在计算异常时如何获得正确的计数?非常感谢您的帮助。

最佳答案

您需要一个 GROUP BY子句以获得正确的计数,并且您需要一个外连接来为那些没有有效省份的国家/地区显示“0”值。

select
c.Name as 'CountryName',
isnull(count(c.Name), 0) as 'ProvinceCount'
from
Country c
left outer join
Province p on
p.CountryID = c.[ID]
where
c.[ID] = @idParameter
and p.[Name] not in ('Washington D.C', 'Another State')
group by
c.Name

关于SQL - LEFT OUTER JOIN 和 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1281967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com