mysql - SQL Group by Subquery 被忽略

标签 mysql sql

我有一个数据库,其中一家公司有一定数量的空位,这些空位可以容纳人员.. 我想做一个查询,我可以看到哪些公司仍有空缺

这是我正在尝试的查询,但它给了我错误的结果。

select
    name,
    slots,
    (select count(*) from persons) as persons
from companies
where city_id = 3
group by companies.id

这应该给我一个带有槽位的表,以及人员表中该公司的人员数量,但它每次都会返回人员总数。

这就是结果

enter image description here

谢谢!

最佳答案

就像 @JoeTaras 所说,您需要加入个人和公司才能知道/计算哪些人属于哪个公司。如果您不以某种方式加入他们,公司和个人将被单独对待和统计,这通常不是很有用。

确实可以使用不同的子查询,但它并不完全是“你做的”,并且可能会比直接连接的性能更低。

示例:

select
    companies.id
    companies.name,
    companies.slots,
    count(persons.id)
from companies
left outer join persons on companies.id = persons. ...
where companies.city_id = 3
group by companies.id, companies.name, companies.slots

关于mysql - SQL Group by Subquery 被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26671269/

相关文章:

mysql - 我不断收到这个 mysql 错误代码 #1089

php - 直接在数据库上执行时查询运行良好,但使用 php 执行时会失败

SQL如何比较两个表中的数据并得到两个表之间不同的结果

mysql - 记录没有索引的表的排序

php - 使用 PDO 中静态变量的表名

mysql - 如何在 oracle sql 中合并(列)两个 SELECT 语句的输出?

MySQL 错误 : Can't create database 'publications' ; database exists

mysql - 我怎样才能使用MySQL得到以下结果

mysql - MySql中的分组和最大数

mysql - 为列的每个唯一值选择前一条记录