【问题标题】:where clause is not narrowing down the records to what i have specifiedwhere 子句没有将记录缩小到我指定的范围
【发布时间】:2015-03-16 05:00:08
【问题描述】:

有一些表,并且正在尝试将记录数加起来,但来自特定办公室。

SQL:

  SELECT  COUNT(*) AS "Number of employees" FROM staff, office
  WHERE office.office_id  =10;

因此希望办公室的员工 = 10。因此该字段应显示为“员工人数”为 3。

相反,它将所有记录相加并显示“9”。

办公室 1 的 ID 为 10 office 2 的 ID 为 20

【问题讨论】:

  • SELECT COUNT(*) AS "Number of employees" FROM staff, office 这种语法还能用吗......? 2 表在同一个?
  • 什么意思?它可以工作,并显示“9”。
  • 您正在执行笛卡尔联接,因为您没有开启条件。所以一个表中的每一行都与第二个表中的每一行相乘。您需要类似 a JOIN b ON a.id=b.id
  • @Mihai 这正是我的意思,他从 A ,B 而不是从 A 内部连接 ​​B 写的东西..

标签: mysql sql count where mysql-workbench


【解决方案1】:

您必须在这两个表之间存在某种关系。员工表中的 officeId 之类的东西?

select count(*) from staff,office where office.office_id=staff.office_id and office.office_id=10;

第一个条件是链接表格,第二个条件是过滤它。

【讨论】:

  • 哦,谢谢你,绞尽脑汁很久了,终于解决了
  • 我还要提一下,如果你已经在staff表中有officeId,你可以这样做:select count(*) from staff where office_id=10;
【解决方案2】:

您必须连接 2 个表才能获得所需的结果,例如:

   SELECT  COUNT(*) AS "Number of employees" FROM staff, office
   WHERE staff.office_id = office.office_id and office.office_id  =10;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多