Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何构建附加列等于关联行数的MySQL查询?_Mysql - Fatal编程技术网

我如何构建附加列等于关联行数的MySQL查询?

我如何构建附加列等于关联行数的MySQL查询?,mysql,Mysql,假设我有两个表Cities和Employees。与一个城市关联的每位员工。我如何构建一个查询,结果是所有城市,并将有额外的列等于与此城市关联的员工数 我尝试了以下方法: SELECT *,COUNT(SELECT * FROM `Employees` WHERE `city_id` = `id`) AS `count` FROM `cities` 但它不起作用 事实上,我不知道我应该去哪里找。希望这里有任何提示。您可以使用cities和employees表之间的内部联接尝试以下查询 SEL

假设我有两个表
Cities
Employees
。与一个城市关联的每位员工。我如何构建一个查询,结果是所有城市,并将有额外的列等于与此城市关联的员工数

我尝试了以下方法:

SELECT *,COUNT(SELECT * FROM `Employees` WHERE `city_id` = `id`) AS `count` FROM `cities`
但它不起作用


事实上,我不知道我应该去哪里找。希望这里有任何提示。

您可以使用cities和employees表之间的内部联接尝试以下查询

  SELECT cities.* ,COUNT( `Employees`.`id`)   FROM `cities`
  INNER JOIN `Employees` on `Employees`.`city_id` = `cities`.`id`
  GROUP BY `cities`.`id`

如果您喜欢旧式SQL,可以尝试以下内容

SELECT cityTable.`name`, employeesTable.employees_count
FROM (SELECT `id`, `name` FROM `Cities`)citiesTable,
     (SELECT count(*) as employees_count, `city_id` FROM `Employees`)employeesTable
WHERE citiesTable.`id` = employeesTable.`city_id`

谓词是:给我所有城市,以及属于它们的员工数量

SELECT c.name, COUNT(e.id) cnt
FROM cities c
LEFT JOIN employees e
    ON c.id = e.city_id
GROUP BY c.name

如果一个城市没有属于它的员工,这将为您提供cnt为零的所有城市

如果我在
城市之间放置
计数
。你能编辑你的帖子吗?