SQL - 连接两个表时无法执行不同的计数

Posted

技术标签:

【中文标题】SQL - 连接两个表时无法执行不同的计数【英文标题】:SQL - cannot perform distinct count when joining two tables 【发布时间】:2017-09-30 15:50:24 【问题描述】:

我有两个表:Customers 和 Orders。我在 CustomerID 列上对客户和订单进行左连接,该列是客户的主键和订单的外键。

    当我在加入后列出 CustomerID 时,我得到了预期的列表。 当我计算 CustomerID 的数量时,我再次得到了我期望的记录数。 当我对 CustomerID 使用不同计数时,我得到一个错误。

1.

select  Customers.CustomerID as list
from Customers left join Orders on Customers.CustomerID = Orders.CustomerID
where Customers.CustomerID = 4;

2.

select  count(Customers.CustomerID) as numRecord
from Customers left join Orders on Customers.CustomerID = Orders.CustomerID
where Customers.CustomerID = 4;

3.

select  count(distinct (Customers.CustomerID)) as numRecord
from Customers left join Orders on Customers.CustomerID = Orders.CustomerID
where Customers.CustomerID = 4;

我不明白错误在哪里。任何帮助,将不胜感激。 错误:

Error in SQL:
Syntax error (missing operator) in query expression 'count(distinct Customers.CustomerID)'.

【问题讨论】:

您使用的是哪个数据库? 我只是在这个链接上运行查询:w3schools.com/sql/trysql.asp?filename=trysql_select_join_inner 【参考方案1】:

您不需要在count(distinct ..)中的Customers.CustomerID周围使用()

select  count(distinct Customers.CustomerID) as numRecord
from Customers 
left join Orders on Customers.CustomerID = Orders.CustomerID
where Customers.CustomerID = 4;

【讨论】:

即使没有(),也会有错误。我把() 用来检查是否有错误 请检查错误。该数据库来自 www.w3schools.com。数据库链接为:w3schools.com/sql/trysql.asp?filename=trysql_select_join_inner 我刚刚尝试过工作......返回(显然)1......你可能需要在重置浏览器时清除缓存.. 它在 Firefox 中不起作用,但在 Chrome 中起作用。谢谢

以上是关于SQL - 连接两个表时无法执行不同的计数的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询 - 两个计数不同的粒度

无法在 Sql Azure 上删除表

尝试使用DBeaver同时执行多个查询时,无法与Ignite群集通信

SSIS导入SQL数据时无法导入出现警告

加入同一个表时 SQL 结果计数发生变化

在无法增删改的情况下连接服务器执行sql