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

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

  1. 当我在加入后列出 CustomerID 时,我得到了预期的列表。
  2. 当我计算 CustomerID 的数量时,我再次得到了我期望的记录数。
  3. 当我对 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)'.

【问题讨论】:

标签: sql left-join distinct


【解决方案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 中起作用。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
  • 2020-11-12
  • 1970-01-01
  • 2021-03-31
  • 2020-12-06
  • 1970-01-01
  • 2018-04-27
相关资源
最近更新 更多